java-接口&抽象类
抽象类
使用abstract关键字修饰的类叫抽象类,使用abstract关键字修饰的方法叫抽象方法,抽象方法不能有方法体。抽象类有如下规范:
- 抽象类中可以没有抽象方法,但是包含抽象方法的类必须声明为抽象类。
- 若子类是抽象类,可以不实现父类的抽象方法,否则必须实现父类的抽象方法。
- 抽象类允许有构造方法,可以在子类中调用,但是不能调用它来实例化抽象类。
接口
接口是从多个相似的类中抽象出来的规范,体现了规范和实现分离的设计哲学。接口不提供任何实现,它不能包含普通方法,接口内部定义的所有的方法都是抽象方法。而Java 8对接口进行了改进,允许在接口中定义默认方法和静态方法,这两类方法是可以提供方法实现的。
- 接口的定义:
[修饰符] interface 接口名 extends 父接口1, 父接口2, ... { }
- 接口的成员:
接口中可以定义成员变量、成员方法(抽象方法、默认方法、静态方法):
- 接口中所有的成员都是public访问权限,而public修饰符可以省略。
- 接口中的成员变量都是静态常量,而static final关键字可以省略。
- 接口中的普通成员方法必须是抽象的,而abstract关键字可以省略。
- 接口中的默认方法必须使用default修饰,静态方法必须使用static修饰,均不能省略。
- 接口的使用
// 1. 一个类可以实现一个或多个接口,使用implements关键字。
// 2. 实现与继承类似,可以获得被实现接口里定义的常量、方法。
// 3. 如果这个类不是抽象类,那么它就必须实现这些接口里所定义的全部抽象方法。
[修饰符] class 类名 extends 父类 implements 接口1, 接口2, ... { }