extends 是 java 中实现单继承的关键字,使子类复用父类非私有成员、支持重写与多态;子类通过 super() 调用父类构造器,遵循严格初始化顺序,static 和 final 方法不可重写。
extends 是 java 中用于建立类之间继承关系的关键字,核心作用是让子类复用父类的非私有成员(字段、方法),同时支持方法重写和多态,是实现代码复用最基础也最常用的方式。
继承语法与基本规则
子类通过 extends 声明继承父类,只能单继承(一个子类只能 extends 一个父类):
- 父类的 public 和 protected 成员可直接被子类访问;default(包级私有)成员在同包下可用;private 成员不可继承,但可通过 public/protected 方法间接使用。
- 构造器不会被继承,但子类构造器默认或显式调用 super() 来初始化父类部分。
- 子类可添加新字段和方法,也可重写父类的非 final 方法,以定制行为。
复用字段和方法的典型场景
当多个类具有相同属性和通用行为时,提取共性到父类,避免重复定义:
- 例如,Animal 类定义 name 字段和 eat() 方法;Dog 和 Cat 继承它,自动获得这些成员,只需补充 bark() 或 meow() 等特有功能。
- 若父类方法逻辑稳定(如数据校验、日志记录),子类直接复用即可,无需重写。
重写(Override)增强复用灵活性
子类通过重写父类方法,在复用结构的同时适配自身逻辑:
- 需保持方法签名一致(名称、参数列表、返回类型兼容),并添加 @Override 注解提高可读性和编译检查。
- 重写时可用 super.方法名() 调用父类原实现,再叠加子类逻辑——比如在保存前先做额外校验。
- 注意:static 方法不能被重写(属于类,不参与多态),final 方法不可重写。
构造器链与初始化顺序
正确理解初始化流程,确保复用安全:
- 创建子类对象时,JVM 先调用父类构造器(隐式或显式 super(...)),再执行子类构造器体。
- 若父类无无参构造器,子类必须显式调用 super(参数),否则编译失败。
- 字段初始化按“父类静态 → 子类静态 → 父类实例 → 父类构造器 → 子类实例 → 子类构造器”顺序进行,影响依赖逻辑的设计。











