Java程序设计语言提供了两种机制,可以用来定义允许多个实现的类型:接口和抽象类。这两种机制之间最明显的区别在于,抽象类允许包含某些方法的实现,接口则不允许。一个更为重要的区别在于,为了实现由抽象类定义的类型,类必须成为抽象类的一个子类。任何一个类,只要它定义了所有必要的方法,并且遵守通用约定,它就被允许实现一个接口,而不管这个类是处于类层次(class hierarchy)的哪个位置。因为Java只允许单继承,所以抽象类作为类型定义受到了极大的限制。
- 现有的类可以很容易被更新,以实现新的接口。
- 接口是定义mixin(混合类型)的理想选择
- 接口允许我们构造非层次结构的类型框架