Java采用单继承、多实现架构:单继承避免菱形继承歧义,强制通过组合复用代码;多实现通过接口拼装能力,支持能力分层;构造器需协作初始化,重写遵循权限守恒与就近原则,final限制扩展边界。

Java 中“单继承、多实现”不是语法技巧,而是设计约束下的架构选择。掌握它,关键在于理解为什么这样设计、怎么用得合理,而不是死记关键字。
单继承:限制带来清晰性
一个类只能用 extends 继承一个父类,这是硬性规则。这不是缺陷,而是为避免“菱形继承”带来的歧义——比如两个父类都有同名方法,子类该调用谁?Java 直接不给这个机会。
- 所有类最终都隐式继承自 Object,哪怕没写
extends Object - 想复用多个类的代码逻辑?不能靠多继承,得靠组合(has-a)、委托或提取公共父类
- 多层继承是允许的(A → B → C),但链不宜过长,否则可读性和维护性会明显下降
多实现:接口解决能力拼装
一个类可以用 implements 同时实现多个接口,每个接口定义一组行为契约。这是 Java 支持“多继承语义”的正统方式。
- 接口中只有 public abstract 方法 和 public static final 常量(Java 8+ 可加 default/static 方法)
- 实现多个接口,等于声明“我同时具备这些能力”,比如:
class Dog implements Runnable, Swimmable, Barkable - 接口之间还能用 extends 继承,形成能力分层(如
AdvancedRunnable extends Runnable)
构造与初始化:继承链必须打通
子类对象创建时,父类部分必须完成初始化。这决定了构造器协作不是可选项,而是强制流程。
立即学习“Java免费学习笔记(深入)”;
- 若父类只有带参构造器,子类构造器第一行必须显式写 super(...)
- 子类不写
super(),编译器自动插入无参super();如果父类没无参构造,就会报错 - this(...) 和 super(...) 不能共存,且都必须是构造器的第一条语句
覆盖与访问:就近原则 + 权限守恒
子类可以重写父类非 private 方法,但要遵守规则,否则编译失败。
- 重写方法的访问权限不能比父类更严格(
protected方法可重写为public,但不能是private) - 成员变量遵循“就近原则”:局部变量 > 子类成员 > 父类非私有成员;想明确访问父类同名变量,用 super.变量名
- final 类不能被继承,final 方法不能被重写,这是对扩展边界的主动控制


















