public class DefaultConstructor { public static void main(String[] args) { Bird nc = new Bird(); // default! } } ///:~
对于下面这一行: new Bird(); 它的作用是新建一个对象,并调用默认构建器——即使尚未明确定义一个象这样的构建器。若没有它,就没有方法可以调用,无法构建我们的对象。然而,假如已经定义了一个构建器(无论是否有自变量),编译程序都不会帮我们自动合成一个:
class Bush { Bush(int i) {} Bush(double d) {} }
现在,假若使用下述代码: new Bush(); 编译程序就会报告自己找不到一个相符的构建器。就好象我们没有设置任何构建器,编译程序会说:“你看来似乎需要一个构建器,所以让我们给你制造一个吧。”但假如我们写了一个构建器,编译程序就会说:“啊,你已写了一个构建器,所以我知道你想干什么;假如你不放置一个默认的,是由于你打算省略它。”