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

问题描述 投票:-2回答:1

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

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

© www.soinside.com 2019 - 2024. All rights reserved.