重载构造函数的最佳方法是什么?

时间:2018-02-12 12:34:49

标签: java constructor overloading

在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:抱歉我的英文

1 个答案:

答案 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,除非你确定它们不能在子类中被覆盖,否则你永远不会知道他们(可能)肯定会做什么。