預設建構子(無參數)由編譯器在類別未定義任何建構子時自動合成。一旦手動定義任何建構子,編譯器不再提供預設建構子。
class Bird { int i; } // 編譯器自動提供 Bird()
class Bush {
Bush(int i) {}
Bush(double d) {}
} // 無預設建構子
new Bird(); // 合法
new Bush(); // 編譯錯誤:找不到無參數建構子
理解預設建構子的自動合成條件,能避免「找不到建構子」的編譯錯誤並精確控制物件實例化。