java8 default method 的使用见解

oracle 在 jdk8 中引入了接口的默认方法,用 default 关键字标识。

public inteface Listener {
	default void start() {
		...
	}
}

该原语特性能将接口的 default 方法以 public 可见范围赋予所有实现类,同时允许重写。

由于默认方法是定义在接口上的方法,只能使用接收参数和接口方法,并且是 public 可见范围,导致了使用的局限性。

在实际开发中的常见场景为,一个功能的主流程固定,并且需由数个方法组成,而方法根据场景可能会有多种实现 (可以对照 Map 接口理解)。

参考: https://stackoverflow.com/questions/19998454/interface-with-default-methods-vs-abstract-class-in-java-8