java接口支持多继承,一个接口可用extends关键字同时继承多个接口;接口多继承不会引发菱形问题,因不包含状态和构造逻辑;子接口可继承抽象方法和default方法,但同名default方法需在子接口中显式重写。

接口之间可以用 extends 继承多个父接口
Java 中接口支持多继承,一个接口可以同时继承多个其他接口,语法是用 extends 关键字,后面跟多个接口名,用逗号分隔。这和类的单继承不同,接口天生就允许多继承,不会引发菱形问题,因为接口不包含状态(字段)和构造逻辑,只定义行为契约。
语法写法和基本规则
接口多继承的写法简洁明确:
- 必须使用 extends,不能用 implements(implements 是类实现接口时用的)
- 只能继承接口,不能继承类或抽象类
- 被继承的多个接口中若有同名抽象方法,子接口无需处理,但最终实现类仍需提供具体实现
- 若父接口中有 default 方法且签名相同,子接口可选择重写该方法,也可保留原样(冲突延后到实现类解决)
实际例子说明
比如定义两个基础能力接口:
interface Flyable { void fly(); }
interface Swimmable { void swim(); }
再定义一个复合接口,同时继承这两个:
interface Ducklike extends Flyable, Swimmable { void quack(); }
此时 Ducklike 接口就包含了 fly()、swim() 和 quack() 三个抽象方法。任何实现 Ducklike 的类,都必须实现全部三个方法。
结合 default 方法的注意事项
如果父接口提供了 default 方法,而子接口没有重写,那么子接口会“继承”这些默认实现;但如果两个父接口有同名 default 方法,子接口必须显式重写该方法,否则编译报错:
- 例如
InterfaceA和InterfaceB都有default void log() { ... } - 则
interface C extends A, B必须覆盖log(),否则无法编译 - 覆盖时可用
A.super.log()或B.super.log()显式调用某一方
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











