在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:抱歉我的英文
答案 0 :(得分:1)
public Livre() {
this.setAutor("");
this.setTitle("");
}
public Livre(String a, String t) {
this();
this.setAuteur(a);
this.setTitre(t);
}
这没什么意义,因为你通过调用this();
来实现的默认值会被下一个设置者覆盖。
public Livre() {
this("", "");
}
public Livre(String a, String t) {
this.setAutor(a);
this.setTitle(t);
}
这与:
相同public Livre() {
this.setAutor("");
this.setTitle("");
}
public Livre(String a, String t) {
this.setAutor(a);
this.setTitle(t);
}
它只是为了避免代码重复。
另外:你不应该在构造函数中调用setter,除非你确定它们不能在子类中被覆盖,否则你永远不会知道他们(可能)肯定会做什么。