默认构建器
正如早先指出的那样,默认构建器是没有自变量的。它们的浸染是建设一个“空工具”。若建设一个没有构建器的类,则编译措施会帮我们自动建设一个默认构建器。譬喻:
//: DefaultConstructor.java class Bird { int i; } 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();
编译措施就会陈诉本身找不到一个相符的构建器。就好象我们没有配置任何构建器,编译措施会说:“你看来好像需要一个构建器,所以让我们给你制造一个吧。”但如果我们写了一个构建器,编译措施就会说:“啊,你已写了一个构建器,所以我知道你想干什么;假如你不安排一个默认的,是由于你规划省略它。”