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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重载构造函数的最佳方法是什么?相关的知识,希望对你有一定的参考价值。

在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:对不起我的英语

答案
public Livre() {
    this.setAutor("");
    this.setTitle("");
}
public Livre(String a, String t) {
    this();
    this.setAuteur(a);
    this.setTitre(t);
}

这没什么意义,因为你通过调用this();实现的默认值会被下一个setter覆盖。

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

以上是关于重载构造函数的最佳方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章