Java继承通过extends实现单继承,子类获得父类非私有成员,可重写方法并用super调用父类成员,初始化顺序为:父类静态→子类静态→父类非静态→父类构造器→子类非静态→子类构造器。

Java 中继承通过 extends 关键字实现,用于建立类之间的“is-a”关系,子类自动获得父类的非私有成员(字段和方法),同时可扩展或重写行为。
extends 关键字的基本写法
子类声明时使用 extends 后接父类名,一个类只能直接继承一个父类(单继承):
- 语法格式:class 子类名 extends 父类名 { ... }
- 父类不能是 final 类,子类不能是 final(除非明确设计为不可继承)
- 构造方法不会被继承,但子类构造器默认会调用父类无参构造器(可通过 super() 显式调用)
继承中访问权限与成员可见性
子类能否使用父类成员,取决于其访问修饰符和声明位置:
- public 成员:任何子类都可直接访问
- protected 成员:同包内所有类、不同包的子类均可访问
- 默认(包访问):仅限同包内的子类可访问
- private 成员:子类无法直接访问(但可通过父类提供的 public/protected 方法间接操作)
方法重写(Override)与 super 的配合使用
子类可重写父类的非 final、非 static、非 private 方法,以提供特定实现:
立即学习“Java免费学习笔记(深入)”;
- 重写方法签名(名称、参数列表、返回类型)必须与父类一致
- 子类方法访问权限不能比父类更严格(如父类是 protected,子类不能是 private)
- 在重写方法中,用 super.方法名() 可调用父类被重写的方法
- 构造器中若需调用父类构造器,super(...) 必须是第一行语句
继承中的初始化顺序
创建子类对象时,JVM 按固定顺序初始化:
- 先执行父类静态成员和静态代码块(按声明顺序)
- 再执行子类静态成员和静态代码块
- 接着执行父类普通成员变量赋值和非静态代码块
- 然后调用父类构造器
- 最后执行子类普通成员变量赋值、非静态代码块和子类构造器










