Skip to main content

07 Interfaces

在Java中,接口是一种引用类型,类似类。它只能包含常量、方法签名、默认方法、私有方法和静态方法。接口不能被实例化。

与类相同,接口也有 public 和package-private两种状态。在接口中,所有抽象、默认或静态方法都默认 public ,可以省略;而所有常量都默认 publicstaticfinal ,这些标识符也可以省略。

在接口中直接添加新方法会导致需要调整所有实现这个接口的类。为避免这种情况,可以将其设为默认方法,给出实现;或者创建一个新接口,使其 extends 原接口。

对于包含默认方法的接口,在实现时有三种处理方式:

  • 不做任何处理,直接使用默认实现。
  • 重新声明,将其变为抽象函数。
  • 重新定义,将其覆盖。

接口中的默认方法支持参数为lambda表达式。

从Java SE 9起,支持在接口中使用私有方法。通过私有方法可以安全地将默认方法或静态方法中的某部分抽象出来。

接口是一种类型。这个类型包含所有实现了某个接口的类型。