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

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

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

构造函数重载 - Java 中的最佳实践 [关闭]

java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

C++复制构造函数和=号重载问题

Javascript函数重载的最佳和快速方法

JAVA-初步认识-第七章-构造函数重载

温习《PHP 核心技术与最佳实践》这本书