《编程导论(Java)·4.3 Java接口》
随着Java8的出现,本节面临尴尬的局面。这里首先按照原有的Java语言设计思路(Java8之前)介绍Java接口,再看看Java8对Java语言设计思路的破坏。
强大而有用的机制
【p142:类甚至是abstract class,理论上都包含实现,因此类是接口和实现的综合体,如[3.1.3 接口与实现分离]所述。如果说抽象方法是纯粹的接口、脱离了实现的接口,那么Java接口就是这些纯粹的接口组成的数据抽象。Java接口只能够拥有抽象方法,它不涉及任何实现,也不能创建其对象(这一点和抽象类一致)。因此,Java接口纯粹是契约的集合,是一种程序设计的表达方式。从数据抽象的角度看,能够在不定义class的同时又可以定义type,将是程序设计中强大而有用的机制。】
按照接口与实现分离原则,用户仅需要了解接口。每一个抽象方法都是一个纯粹的接口,它不得不与实现相分离。抽象方法是功能抽象的最高形式。在抽象方法的基础上,有了abstract class——类层次的元素,它理论上是接口和实现的综合体;而Java接口纯粹是契约的集合,它以跨越类层次的方式定义type,是一种程序设计中强大而有用的机制。
【p144
接口具有下述性质。
(1)接口不提供代码重用性。接口并不能使你获得代码继承的好处,它没有代码重用能力。接口的意义在于获得程序设计上的高度可维护性。
(2)接口能够通过多继承进行扩展父接口。Java支持接口多继承。interface A extends B, C, D{