java接口支持多继承,用extends关键字可同时继承多个接口;子接口需显式解决default方法冲突和同名常量的引用歧义;类单继承但可多实现接口。

Java 接口之间通过 extends 关键字实现多继承,一个接口可以同时继承多个父接口,用逗号分隔。这和类的单继承不同,是接口独有的能力。
接口多继承的核心写法
interface Animal extends Movable, Edible, Serializable {
void breathe();
}
这里 Animal 接口继承了 Movable、Edible 和 Serializable 三个接口,它自动获得这三个接口中所有抽象方法、默认方法(default)和公共常量(public static final 字段)。
子接口必须处理默认方法冲突
当多个父接口提供同名同签名的 default 方法时,编译器不允许模糊继承,子接口必须显式解决:
- 可以重写为抽象方法(去掉
default,不写方法体) - 或提供新的
default实现 - 不能直接保留任一父接口的
default版本而不表态
例如:
interface A { default void work() { System.out.println("A"); } }
interface B { default void work() { System.out.println("B"); } }
interface C extends A, B {
// 编译报错!必须覆盖
@Override
default void work() {
A.super.work(); // 显式调用 A 的版本
}
}
常量同名时需显式限定
如果 A 和 B 都定义了 int MAX = 100,那么在 C 中直接写 MAX 会编译错误。使用时必须写成 A.MAX 或 B.MAX。
和类的关系要分清
- 接口
extends接口:是多继承,组合契约 - 类
extends类:只能单继承 - 类
implements接口:可实现多个,但实现类最终要提供所有抽象方法的具体逻辑
比如:
class Duck implements Animal { ... }
这个 Duck 类必须实现 Animal 及其所有父接口(如 Movable, Edible)里声明的抽象方法,不管这些方法最初来自哪个接口。
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











