正如早先指出的那样默认构建器是没有自变量的它们的作用是创建一个空对象若创建一个没有构建器的类则编译程序会帮我们自动创建一个默认构建器例如 //: DefaultConstructorjava 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(); 编译程序就会报告自己找不到一个相符的构建器就好象我们没有设置任何构建器编译程序会说你看来似乎需要一个构建器所以让我们给你制造一个吧但假如我们写了一个构建器编译程序就会说啊你已写了一个构建器所以我知道你想干什么如果你不放置一个默认的是由于你打算省略它 |