【发布时间】:2018-02-12 12:34:48
【问题描述】:
在java中重载构造函数,我应该写:
public Livre() {
this.setAutor("");
this.setTitle("");
}
public Livre(String a, String t) {
this();
this.setAuteur(a);
this.setTitre(t);
}
或
public Livre() {
this("", "");
}
public Livre(String a, String t) {
this.setAutor(a);
this.setTitle(t);
}
第一个在默认构造函数中具有所有默认值,但第二个似乎更普遍,为什么?
谢谢
ps:对不起我的英语
【问题讨论】:
-
使用第二种方法,一切都通过你的
Livre(String,String)构造函数,所以有一个点可以在未来放置额外的初始化代码。 -
在第一个示例中调用
this()没有任何意义,因为您会立即覆盖author和title的值。 -
当然最好的方法是只有一个构造函数。您最好为此类用户可以使用的默认值提供常量。
-
@MonkeySupersonic,应该有
super()而不是this(),这样才有意义。
标签: java constructor overloading