java接口通过多实现支持行为多继承,规避菱形问题;可多重implements、default方法增强复用(冲突需显式重写);接口可extends聚合能力;有状态行为推荐组合模式。

Java 接口通过“多实现”机制天然支持类似多继承的效果,关键在于它只继承行为契约(can-do),不继承状态或构造逻辑,从而绕开菱形问题。
一个类可以 implements 多个接口
这是最直接的方式。类可以同时声明实现多个接口,获得各自定义的抽象方法,编译器会强制你提供全部实现。
- 接口之间互不影响,没有继承链冲突
- 每个接口的方法签名独立,即使方法名相同,只要参数不同就视为重载;若完全同名同参,也只需在实现类中统一覆盖一次
- 例如:
Duck implements Flyable, Swimmable, Quackable,就能飞、能游、能叫
Java 8+ 的 default 方法增强复用能力
接口可提供默认实现,让实现类“开箱即用”,无需重复编码。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 如果两个接口都有
default void move(),编译器会报错,要求你在实现类中显式重写——这反而是优点:强制你面对歧义,而不是静默选择 - 重写时可用
InterfaceName.super.move()明确调用某一方的默认实现 - 比如:
Flyable.super.move()或Swimmable.super.move()
接口之间也能继承,形成能力层级
一个接口可以 extends 多个其他接口,把能力聚合后统一提供给实现类。
- 例如:
interface Bird extends Flyable, Singable, EggLaying - 类只需
implements Bird,就间接具备三种能力,结构更清晰 - 这种“接口继承”是纯抽象的,不引入任何字段或构造器,安全无副作用
结合组合模式处理有状态的行为
当某个能力需要维护内部状态(比如飞行高度、游泳速度),仅靠接口 default 方法不够时,推荐用组合。
- 把“能飞”封装为
FlyBehavior类,把“能游”封装为SwimBehavior类 - 主类持有一个
FlyBehavior字段和一个SwimBehavior字段 - 接口只定义契约(如
void fly()),具体委托给对应 behavior 实例执行 - 这样既保持了灵活性(运行时可替换 behavior),又避免了多重状态继承的混乱
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










