是的,子類構造器首行若不顯式調用 super(...) 或 this(...),編譯器會自動插入 super() 調用父類無參構造器。
// 寫法 1:省略 super()
class Child extends Parent {
Child() {
// 編譯器自動插入 super();
}
}
// 寫法 2:顯式調用(效果相同)
class Child extends Parent {
Child() {
super(); // 可寫可不寫
}
}
class Parent {
Parent(String msg) { ... } // 唯一構造器
}
class Child extends Parent {
Child() {
super("init"); // 必須顯式調用,否則編譯錯誤
}
}
super(...) 或 this(...)。super()。
3. 父類無無參構造器時,子類必須顯式調用帶參 super。