接口
语法
- interface 接口名{}
特点
- 只能包含公开静态常量和公开抽象方法
- 没有构造方法
jdk1.8
-
可以有静态方法
- 不能被实现,被接口独有
- 通过接口名.方法名调用
-
可以有默认方法(用default修饰)
- 可以被继承,通过实现类调用
概念
微观
- 接口代表某种能力和和约束
- 接口支持多实现,为类扩充多种功能
宏观
- 接口代表一种标准
和抽象类的异同
相同
- 都可以编译成.class文件
- 不能创建对象
- 可以作为引用类型
- 具备Object对象的方法
不同
- 接口所有所有属性都是公开静态常量,并且隐式使用public static final修饰,因此可以省略public static final
- 接口所有方法都是公开抽象方法,并且隐式使用public abstract修饰,因此可以省略public abstract
- 接口无构造方法、动态代码块、静态代码块
规范
-
类在实现接口是必须实现接口中的所有方法,否则是抽象类
-
实现接口中的方法时,访问修饰符是public
接口引用
-
接口可以声明为引用,并指向实现类
-
注意
- 尽可以调用接口中的方法,不可调用实现类中独有的方法
- 可强制转换为真实类,调用实现类独有的方法
类型
常量接口
标记接口
- Serializable
- Cloneable
回调原理
- 先有接口的使用者,再有接口的实现者
面向对象设计原则
开闭原则
- 单一职能原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 迪米特原则(最少知道)
- 合成复用原则