1.3 KiB
1.3 KiB
Java8接口支持在声明方法的同时提供实现, 通过两种方式可以完成这种操作
- 在接口内声明静态方法
- 引入默认方法,通过默认方法可以提供制定接口的默认实现
不断演进的API
初始版本的API 第二版API
概述默认方法
Colletion接口的stream方法,List的sort方法,Predicate,Function和Comparator
默认方法的使用模式
可选方法 行为的多继承
解决冲突的规则
解决问题的三条规则
- 类中的方法优先级最高
- 子接口的优先级最高
- 继承了多个接口的类必须通过显示覆盖和调用期望的方式,显示地选择使用哪一个默认方法的实现
选择提供了最具体实现的默认方法的接口 冲突及如何显式地消除歧义
实现具有相同函数声明的两个接口时,编译的时候会报错
// 在方法体内显示调用
public class C implements B, A {
void hello() {
B.super.hello();
}
}
菱形继承问题
- 类或父类中显示声明的方法,其优先级高于所有的默认方法
- 如果第一条无法判断,方法签名又没有区别,那么选择提供最具体实现的默认方法的接口
- 如果冲突依旧无法解决,在类中覆盖该默认方法,显示地指定在类中使用哪一个接口中的方法