子类不能直接访问父类构造方法,但必须显式或隐式调用以完成初始化;默认插入super()调用父类无参构造,若父类无此类构造则需显式super(...)且必须为首句;构造方法不可继承、重写或直接调用。
子类不能直接“访问”父类的构造方法,但必须通过 显式或隐式调用 父类构造方法来完成自身实例化。这是 Java 对象初始化的强制规则:每个子类构造方法执行时,都必须确保父类部分被正确初始化。
如果子类构造方法中没有写 super(...),编译器会自动在第一行插入 super() —— 即调用父类的无参构造方法。
super(...),编译会报错:“找不到合适的构造器”;public Parent(String name),子类构造方法未调用 super(name),就会编译失败。当父类没有无参构造,或你想初始化父类特定状态时,必须在子类构造方法的第一行写 super(...),参数需匹配父类某个构造方法签名。
super() 必须是子类构造方法中的第一条语句;this(...)(调用本类其他构造)共存;super("defaultName", 18); 调用父类 Parent(String, int) 构造方法。构造方法不是普通成员方法,它不参与继承机制:
立即学习“Java免费学习笔记(深入)”;
parentInstance.super(...) 或类似语法调用;@Override 修饰构造方法 —— 它根本不是可覆盖的方法。容易混淆的几个点:
super 是调用“父类构造方法对象”,其实它是触发父类构造逻辑的指令;super(...) —— 编译直接拒绝;super() 当成普通方法调用,试图多次或条件调用 —— 语法不允许。