接口interface
接口,比抽象类还要抽象的类:
- 接口中的方法会被隐式的指定为 public abstract (只能是 public abstract,其他修饰符都会报错)。
- 接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误。)
- 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
定义接口
定义接口不再使用class关键字,而是interface
1 | [修饰符] interface 接口名 extends 父接口1,父接口2...{ |
接口中的成员变量始终默认添加public static final修饰符
1 | public interface interfaceTest { |
接口中的方法
1 | public interface interfaceTest { |
接口的继承
接口支持多继承
1 |
|
接口不能显式继承任何类(隐式继承Object)
类使用接口
1 | public class 类名 extends 父类 implements 接口1,接口2,接口3{ |
使用接口的类必须重写接口的全部抽象方法
1 | public class public_test implements interfaceTest { |
接口和抽象类
相同
- 都不能被实例化
- 都可以包含抽象方法
不同
- 接口只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供实现;抽象类可以包含普通方法
- 接口只能定义静态常量,不能定义普通成员变量;抽象类能定义静态常量,也能定义普通成员变量
- 接口不包含构造器;抽象类可以包含构造器,用于让子类调用构造器完成初始化操作
- 接口不能包含初始化块;抽象类能包含初始化块
- 一个类只能继承一个类;一个类可以实现多个接口