Day14-46.Default constructors

来源:互联网 发布:黄金白银分析软件 编辑:程序博客网 时间:2024/06/06 00:31

默认构造器

如前所述,默认构造器又名无参构造器是没有形式参数的——它的作用是构建一个默认对象。

如果你写的勒种没有构造器,则编译器会自动帮你创建一个默认构造器。例如:

//: initialization/DefaultConstructor.javaclass Bird {}public class DefaultConstructor {  public static void main(String[] args) {    Bird b = new Bird(); // Default!  }} ///:~


表达式new bird()

行创建了一个新对象,并调用其默认构造器——即使你没有明确定义它。

没有他的话就没有方法可调用,就无法创建对象。

但是如果已经定义了一个构造器无论是否有参数,编译器就不会帮你自动创建默认构造器“

//: initialization/NoSynthesis.javaclass Bird2 {  Bird2(int i) {}  Bird2(double d) {}}public class NoSynthesis {  public static void main(String[] args) {    //! Bird2 b = new Bird2(); // No default    Bird2 b2 = new Bird2(1);    Bird2 b3 = new Bird2(1.0);  }} ///:~


要是你这样写:

new Bird2();

编译器就会报错:没有找到匹配的构造器,

这就好比,要是你没有提供任何构造器,编译器会认为”你需要一个构造器,让我给你制造一个吧“,

但假如你已写了一个构造器,编译器会认为”啊,你已写了一个构造器,所以你知道你在作什么。你是可以省略了默认构造器啊“。

原创粉丝点击