Files
Hui-s-notebook/默认方法.md
2023-09-10 10:50:53 +08:00

1.3 KiB
Raw Blame History

Java8接口支持在声明方法的同时提供实现 通过两种方式可以完成这种操作

  1. 在接口内声明静态方法
  2. 引入默认方法,通过默认方法可以提供制定接口的默认实现

不断演进的API

初始版本的API 第二版API

概述默认方法

Colletion接口的stream方法List的sort方法PredicateFunction和Comparator

默认方法的使用模式

可选方法 行为的多继承

解决冲突的规则

解决问题的三条规则

  1. 类中的方法优先级最高
  2. 子接口的优先级最高
  3. 继承了多个接口的类必须通过显示覆盖和调用期望的方式,显示地选择使用哪一个默认方法的实现

选择提供了最具体实现的默认方法的接口 冲突及如何显式地消除歧义

实现具有相同函数声明的两个接口时,编译的时候会报错

// 在方法体内显示调用
public class C implements B A {
	void hello() {
		B.super.hello();
	}
}

菱形继承问题

  • 类或父类中显示声明的方法,其优先级高于所有的默认方法
  • 如果第一条无法判断,方法签名又没有区别,那么选择提供最具体实现的默认方法的接口
  • 如果冲突依旧无法解决,在类中覆盖该默认方法,显示地指定在类中使用哪一个接口中的方法