public class DefaultConstructor { public static void main(String[] args) { Bird nc = new Bird(); // default! } } ///:~
對于下面這一行: new Bird(); 它的作用是新建一個對象,并調(diào)用默認(rèn)構(gòu)建器——即使尚未明確定義一個象這樣的構(gòu)建器。若沒有它,就沒有方法可以調(diào)用,無法構(gòu)建我們的對象。然而,假如已經(jīng)定義了一個構(gòu)建器(無論是否有自變量),編譯程序都不會幫我們自動合成一個:
class Bush { Bush(int i) {} Bush(double d) {} }
現(xiàn)在,假若使用下述代碼: new Bush(); 編譯程序就會報告自己找不到一個相符的構(gòu)建器。就好象我們沒有設(shè)置任何構(gòu)建器,編譯程序會說:“你看來似乎需要一個構(gòu)建器,所以讓我們給你制造一個吧。”但假如我們寫了一個構(gòu)建器,編譯程序就會說:“啊,你已寫了一個構(gòu)建器,所以我知道你想干什么;假如你不放置一個默認(rèn)的,是由于你打算省略它。”