最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java 中继承关系下子类怎样访问父类的构造方法
时间:2026-07-02 10:35:52 编辑:袖梨 来源:一聚教程网
子类不能直接访问父类构造方法,但必须显式或隐式调用以完成初始化;默认插入super()调用父类无参构造,若父类无此类构造则需显式super(...)且必须为首句;构造方法不可继承、重写或直接调用。
子类不能直接“访问”父类的构造方法,但必须通过 显式或隐式调用 父类构造方法来完成自身实例化。这是 Java 对象初始化的强制规则:每个子类构造方法执行时,都必须确保父类部分被正确初始化。
子类构造方法默认调用父类无参构造方法
如果子类构造方法中没有写 super(...),编译器会自动在第一行插入 super() —— 即调用父类的无参构造方法。
- 前提是父类存在**可访问的无参构造方法**(默认提供或显式定义);
- 如果父类只定义了带参构造方法、且没有无参构造,而子类又没写
super(...),编译会报错:“找不到合适的构造器”; - 例如:父类只有
public Parent(String name),子类构造方法未调用super(name),就会编译失败。
子类需用 super() 显式调用父类指定构造方法
当父类没有无参构造,或你想初始化父类特定状态时,必须在子类构造方法的第一行写 super(...),参数需匹配父类某个构造方法签名。
-
super()必须是子类构造方法中的第一条语句; - 只能出现一次,且不能和
this(...)(调用本类其他构造)共存; - 例如:
super("defaultName", 18);调用父类Parent(String, int)构造方法。
父类构造方法本身不可继承、不可重写、不可直接调用
构造方法不是普通成员方法,它不参与继承机制:
立即学习“Java免费学习笔记(深入)”;
- 子类不会“继承”父类的构造方法;
- 不能用
parentInstance.super(...)或类似语法调用; - 也不能用
@Override修饰构造方法 —— 它根本不是可覆盖的方法。
常见误区提醒
容易混淆的几个点:
- 误以为
super是调用“父类构造方法对象”,其实它是触发父类构造逻辑的指令; - 误在构造方法中间或后面写
super(...)—— 编译直接拒绝; - 误把
super()当成普通方法调用,试图多次或条件调用 —— 语法不允许。