接口通过extends实现多继承,本质是契约叠加而非类的多继承,子接口继承所有父接口的public abstract方法及default/static声明,不继承default方法体,实现类只需实现子接口即满足全部父接口契约。

接口与接口之间用 extends 实现多继承,本质是接口的**继承链扩展**,不是类的多继承,也不产生实现类的冲突问题。它让一个接口复用多个父接口的抽象方法声明,从而在实现类中一次性承担所有契约。
接口继承多个父接口的写法
一个接口可以 extends 多个其他接口,用逗号分隔:
- 语法:`interface 子接口名 extends 接口A, 接口B, 接口C { ... }`
- 子接口会继承所有父接口中的 所有 public abstract 方法(包括 Java 8+ 的 default/static 方法声明,但不继承 default 方法体)
- 继承后,子接口本身仍是接口,不能有构造器、实例字段或非 public 成员
继承后的效果和使用规则
被继承的接口方法会“合并”到子接口中,实现类只需实现这个子接口,就自动满足全部父接口契约:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 实现类 `implements 子接口` → 必须提供 所有继承来的抽象方法 的具体实现
- 如果多个父接口中有同名同签名的抽象方法,不会报错,视为同一方法(无歧义)
- 如果父接口提供了 default 方法,子接口可选择重写、保留、或再次声明为 abstract(覆盖默认行为)
实际例子说明
比如定义基础能力接口,再组合成复合接口:
interface Flyable { void fly(); }
interface Swimmable { void swim(); }
interface Walkable { void walk(); }
// 接口多继承:一个接口融合多种能力
interface DuckBehavior extends Flyable, Swimmable, Walkable {
// 可额外添加新方法
void quack();
}
// 实现类只需实现 DuckBehavior,即同时满足飞、游、走、叫四种契约
class Duck implements DuckBehavior {
public void fly() { System.out.println("flap flap"); }
public void swim() { System.out.println("splash splash"); }
public void walk() { System.out.println("waddle waddle"); }
public void quack() { System.out.println("quack!"); }
}
注意点:和类继承的区别
接口间的 extends 是纯契约叠加,没有状态、没有构造逻辑、没有菱形问题:
- 不涉及字段继承,也没有 this 引用歧义
- 不触发初始化顺序问题
- 即使多个父接口都 extends 同一个祖接口(如 `interface A extends Common`, `interface B extends Common`),子接口 `C extends A, B` 也不会重复声明 `Common` 的方法——它只继承一次
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










