java接口支持多继承,使用extends关键字后接多个接口名并用英文逗号分隔,如interface x extends a, b, c;子接口合并所有父接口的抽象方法、default方法、静态方法和常量,实现类必须实现其中全部抽象方法,同名default方法需显式重写。

Java 接口**能多继承**,这是语言原生支持的特性,和类的单继承完全不同。
接口多继承怎么写
用 extends 关键字,后面跟多个接口名,用英文逗号分隔:
- 语法格式:
interface 子接口 extends 父接口A, 父接口B, 父接口C - 子接口会“合并”所有父接口中的抽象方法、默认方法、静态方法和常量
- 一个接口可以继承零个、一个或多个接口,不强制必须继承
- 例如:
interface Animal extends Flyable, Swimmable, Walkable,那么Animal就同时拥有这三个接口定义的所有能力契约
实现类要怎么做
当一个类 implements 这个“多继承来的接口”时,它必须实现该接口及其所有父接口中声明的抽象方法(不含 default / static 方法):
- 不管
fly()来自Flyable,还是swim()来自Swimmable,只要最终出现在Animal中,就必须在实现类里提供具体逻辑 - 如果某个父接口后续新增了抽象方法,所有实现该子接口的类都会立即编译失败——这是接口多继承带来的强约束性,也是保障契约一致的关键
- 示例:
class Duck implements Animal→ 必须实现fly()、swim()、walk()、eat()(假设Animal自己还定义了eat())
注意默认方法冲突
从 Java 8 开始,接口可含 default 方法。若多个父接口提供了同名同签名的 default 方法,子接口不会自动选择或合并,而是在实现类中触发编译错误:
- 比如
Flyable和Swimmable都有default void move() { ... } - 那么
Duck类必须显式重写move(),否则无法通过编译 - 重写时可用
Flyable.super.move()或Swimmable.super.move()显式调用某一方的实现
别和类的多实现搞混
接口多继承(interface X extends A, B)和类多实现(class C implements A, B)是两回事:
- 前者是接口之间的能力叠加,用于定义更丰富的契约类型
- 后者是类对多个契约的统一承诺,用于获得多种行为能力
- 类永远只能
extends一个类,但可以implements多个接口,也可以只implements一个“已经多继承过的接口”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











