java接口通过extends支持多继承,可同时继承多个接口并合并其抽象方法;若父接口存在同名default方法,实现类须显式重写并选择调用路径;这与类的单继承及implements实现契约有本质区别。

Java 中接口之间用 extends 实现继承,是接口定义层面的“能力叠加”,语法直接、规则明确,和类的单继承完全不同。
接口可以多继承,用逗号分隔多个父接口
一个接口可以通过 extends 同时继承多个其他接口,各接口名用英文逗号分隔:
- 语法格式:interface 子接口名 extends 接口A, 接口B, 接口C { ... }
- 被继承的接口中所有 抽象方法 会自动“合并”进子接口
- 子接口的实现类,必须提供这些方法的具体实现(除非父接口提供了默认方法)
所有抽象方法都会累积,实现类要一并覆盖
比如:
interface Flyable { void fly(); }interface Swimmable { void swim(); }interface Animal extends Flyable, Swimmable { void eat(); }
此时 Animal 接口实际包含三个抽象方法:fly()、swim()、eat()。任何实现 Animal 的类(如 class Duck implements Animal),都必须写出这三个方法的具体逻辑。
注意默认方法冲突的处理
如果多个父接口提供了同名同签名的 default 方法,子接口本身不会自动选择或合并,而是在实现类中触发编译错误:
- 例如
Flyable和Swimmable都定义了default void move() { ... } - 实现类
Duck必须显式重写move()方法 - 重写时可选择调用某一方:比如
Flyable.super.move()或Swimmable.super.move()
和类继承的关键区别别搞混
这是初学者常踩的坑:
- 接口 extends 接口 → 是接口之间的继承,支持多个
- 类 extends 类 → 只能有一个父类,不支持多继承
- 类 implements 接口 → 可以同时实现多个接口,但那是“实现契约”,不是继承关系
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











