java通过接口多实现和接口多继承支持多行为契约组合,而非状态与实现的多重继承;类可implements多个接口,接口可extends多个父接口,java 8起default方法支持行为复用,工程中常采用“单抽象类+多接口”策略。

Java 不支持类的多继承,但可以通过接口实现面向对象中“多继承”的效果——准确说是多行为契约的组合,而非状态与实现的多重继承。
接口多实现:一个类实现多个接口
这是最直接、最常用的方式。类用 implements 关键字同时声明多个接口,从而获得多种能力:
- 每个接口定义一组抽象方法(如
fly()、swim()、eat()) - 实现类必须提供所有方法的具体逻辑(除非接口提供了 default 方法)
- 语法简洁明确:
class Duck implements Flyable, Swimmable, Edible
接口之间的多继承:用 extends 组合能力
接口本身也支持多继承,一个接口可一次性扩展多个父接口:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 写法是
interface Animal extends Flyable, Swimmable - 子接口会“合并”所有父接口的抽象方法,形成更丰富的契约
- 实现该接口的类,等价于同时实现了所有父接口的方法
默认方法解决行为复用问题
从 Java 8 起,接口可包含 default 方法,让能力具备默认实现:
- 例如
Flyable.default fly() { ... }和Swimmable.default swim() { ... } - 实现类自动获得这些行为,无需重复编码
- 若多个接口有同名 default 方法,必须在实现类中显式重写,并可用
Flyable.super.fly()或Swimmable.super.swim()明确调用
与抽象类配合使用更贴近真实场景
工程中常采用“单抽象类 + 多接口”的分层策略:
- 抽象类负责共享状态和通用实现(如连接池、日志器、配置字段)
- 接口负责声明横向能力(如
Retryable、CircuitBreakable、Tracable) - 具体类写成
class HttpClient extends AbstractClient implements Retryable, CircuitBreakable
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










