Java 重载构造函数的最佳方法是什么?
在java for重载构造函数中,我应该写:Java 重载构造函数的最佳方法是什么?,java,constructor,overloading,Java,Constructor,Overloading,在java for重载构造函数中,我应该写: public Livre() { this.setAutor(""); this.setTitle(""); } public Livre(String a, String t) { this(); this.setAuteur(a); this.setTitre(t); } 或 第一个在默认构造函数中具有所有默认值,但第二个似乎更广泛,为什么 谢谢 ps:对不起我的英语 public Livre() {
public Livre() {
this.setAutor("");
this.setTitle("");
}
public Livre(String a, String t) {
this();
this.setAuteur(a);
this.setTitre(t);
}
或
第一个在默认构造函数中具有所有默认值,但第二个似乎更广泛,为什么
谢谢
ps:对不起我的英语
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,除非你确定它们不能在子类中被覆盖,否则你永远也不知道它们(可能)会做什么。第二种方法,一切都通过你的Livre(String,String)
构造函数,因此,有一点需要在将来添加额外的初始化代码。在第一个示例中调用this()
没有任何意义,因为您会立即覆盖author
和title
的值。当然,最好的方法是只使用一个构造函数。最好为此类用户可以使用的默认值提供常量。@MonkeySupersonic,应该有super()
而不是this()
,这样才有意义。
public Livre() {
this.setAutor("");
this.setTitle("");
}
public Livre(String a, String t) {
this.setAutor(a);
this.setTitle(t);
}