Java中一个类可同时实现多个接口,通过implements后跟逗号分隔的接口名实现;必须实现所有抽象方法;同名同签名方法只需实现一次,返回类型冲突则编译失败;default方法冲突须显式重写,static方法不可继承或重写。
Java中一个类可以同时实现多个接口,这是通过implements关键字后列出多个接口名(用英文逗号分隔)来完成的。接口本身只定义行为契约,不包含状态,因此多实现不会引发“多重继承”的歧义或冲突问题。
一个类在声明时使用implements关键字,后面跟上多个接口名,中间用逗号分隔:
class MyClass implements InterfaceA, InterfaceB, InterfaceC { ... }
该类必须提供所有接口中**所有抽象方
法**的具体实现(除非是抽象类)。编译器会强制检查,缺一不可。
当多个接口中定义了**同名同签名**的方法(包括返回类型、方法名、参数列表完全一致),实现类只需提供一份实现即可,无需重复声明:
void或都返回同一类型),直接实现一次即可;String,另一个返回Object),代码无法通过编译——Java不允许这种不兼容的重复声明;default)若发生冲突,实现类必须显式重写该方法,否则编译报错。自Java 8起,接口可含default和static方法:
default方法提供默认行为,但多个接口含同名default方法时,实现类必须覆盖它,否则编译失败;static方法属于接口自身,不能被实现类继承,也不能被重写,调用时需通过接口名限定(如InterfaceA.doStatic());default方法不能访问实现类的实例字段,仅能操作参数或调用其他接口方法。多实现适合构建正交职责的能力组合,例如:
Serializable),又支持比较(Comparable),还可被克隆(Cloneable);Payable、Shippable、Trackable),实体类按需组合;