当前位置: 技术问答>java相关
能否解释其意?
来源: 互联网 发布时间:2015-08-01
本文导语: class Bush { Bush(int i) {} Bush(double d) {} } 现在,假若使用下述代码: new Bush(); 编译程序就会报告自己找不到一个相符的构建器。就好象我们没有设置任何构建器,编译程序会说:“你看来似乎需要一个构建器,所以...
class Bush {
Bush(int i) {}
Bush(double d) {}
}
现在,假若使用下述代码:
new Bush();
编译程序就会报告自己找不到一个相符的构建器。就好象我们没有设置任何构建器,编译程序会说:“你看来似乎需要一个构建器,所以让我们给你制造一个吧。”但假如我们写了一个构建器,编译程序就会说:“啊,你已写了一个构建器,所以我知道你想干什么;如果你不放置一个默认的,是由于你打算省略它。”
这是《thinking in java》中的一段。很拽。理解能力有限,麻烦那位高手告诉我他在说什么,调用默认构造起不就行了吗?哪来这么多废话?
Bush(int i) {}
Bush(double d) {}
}
现在,假若使用下述代码:
new Bush();
编译程序就会报告自己找不到一个相符的构建器。就好象我们没有设置任何构建器,编译程序会说:“你看来似乎需要一个构建器,所以让我们给你制造一个吧。”但假如我们写了一个构建器,编译程序就会说:“啊,你已写了一个构建器,所以我知道你想干什么;如果你不放置一个默认的,是由于你打算省略它。”
这是《thinking in java》中的一段。很拽。理解能力有限,麻烦那位高手告诉我他在说什么,调用默认构造起不就行了吗?哪来这么多废话?
|
Once you define your own constructor such as Bush(int i) {}, the default constructor Bush() {} provided by system will never be used. If you still want to use Bush(), you should define it by yourself. Go to http://www.bruceeckel.com/, you can download the original edition e-books. I think it's good.
|
new Bush()是调用缺省的构造器,而你已经自己定义了两个构造器,所以java就不会再构建一个缺省的构造器,所以你可以写成new Bush(int) or new Bush(double)