java接口通过extends可多继承多个接口,实现行为契约叠加;语法为interface x extends a, b, c;子接口合并所有父接口抽象方法,同名default方法需显式重写以解决冲突。

Java 中接口之间使用 extends 关键字实现的是多接口继承,不是传统面向对象意义上的“多重继承”(Java 类不支持多继承,但接口可以继承多个接口),本质是能力的叠加与契约的组合。
接口用 extends 继承多个接口的语法
一个接口可以通过 extends 同时继承多个接口,用逗号分隔:
interface A { void methodA(); }
interface B { void methodB(); }
interface C { void methodC(); }
// 接口 D 同时继承 A、B、C
interface D extends A, B, C {
// 可新增方法,也可不加
void methodD();
}
此时实现类只要实现 D,就必须提供 methodA()、methodB()、methodC() 和 methodD() 的具体逻辑。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
继承链中的方法重名与默认方法处理
当多个父接口中存在同名同签名的方法时:
- 如果都是抽象方法(无实现),子接口无需处理,但实现类必须覆盖实现一次;
- 如果至少有一个提供了 default 方法,而其他没有,则子接口或实现类必须显式重写该方法(否则编译报错),以消除歧义;
- 若多个父接口都定义了同 signature 的 default 方法,子接口必须重写并明确选择其一或提供新实现。
接口继承 ≠ 类继承:不涉及状态和构造器
接口继承只传递方法声明(含 default/static 方法)和常量(public static final 字段),不继承实例字段、构造器或私有成员。它纯粹是行为契约的扩展,例如:
interface Flyable { void fly(); }
interface Swimmable { void swim(); }
interface DuckBehavior extends Flyable, Swimmable {
default void quack() { System.out.println("Quack!"); }
}
这样,任何实现 DuckBehavior 的类,自然具备飞行、游泳、叫唤三种能力声明,且可直接调用 quack()。
实际使用建议
- 优先用组合式接口设计:把通用能力拆成小接口(如
Readable、Writable),再用extends组装成复合接口(如IOStream extends Readable, Writable); - 避免在多继承链中随意覆盖 default 方法,除非有明确语义差异;
- 注意 Java 8+ 才支持接口中 default/static 方法,老版本只能继承抽象方法。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










