一、抽象类、方法(abstract)
有抽象方法的类只能定义能抽象类
抽象类不能实例化,及不能用new来实例化抽象类。
抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
抽象方法必须被子类实现(重写)。
抽象类定义:
abstract class A {
abstract returnType method(参数列表);//抽象方法不能有方法体,并且需要在子类中重写
}
class sonOfAbstract extends A {
@override
public returnType(同上) method(参数列表同上){//方法体}
}
需要注意的是抽象方法不能定义在非抽象类;
二、接口(interface)
接口可以理解为一种标准,接口中没有实际的可执行代码,不能定义非抽象方法。
通过实现此接口的类来发挥作用(提供了一种书写方法的标准,规范代码,方便多态的实现)。
不能定义变量,可以定义常量且均为(public static final修饰)。
不能生成实例对象。
接口的定义、实现:
public interface A{
int PI = 3.14;//默认所有属性均为 public static final 修饰;
returnType method(参数列表);//默认所有方法均为 public abstract 修饰;
}
接口使用:
class B implement A{ //所有实现了接口的非抽象类必须重写接口中的全部抽象方法!
@override
returnType method(参数列表){
//实现方法体
}
}
三、向上/向下转型
向上转型:当一个子类/实现类继承一个父类/接口时,通过子类声明的变量来调用父类的方法、属性就会自动发生向上转型。
向下转型:当需要使用一个父类/接口声明的变量来调用其子类/实现类中方法或属性是就需要通过向下转型来实现。
向下转型的方式为: (子类/实现类类名)父类/接口名;
java中的多态就是通过向上向下转型来实现的。