如果我有一個重載構造函數的客戶類(默認和一個帶參數)什麼是在重載構造函數中設置類成員的正確方法是什麼?使用「this」引用或使用setter方法?類最佳實踐
只是不確定適當的方法是什麼。
public class Customer {
private String firstName;
private String lastName;
private int age;
public Customer() {}
//This Way
public Customer(String firstName, String lastName, int age)
{
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
// Or this way?
public Customer(String firstName, String lastName, int age)
{
setFirstName(firstName);
setLastName(lastName);
setAge(age);
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
更好地傳達意圖,那麼您可以更自由地處理這種情況。這是目前爲止唯一明智的答案。事實上,由於這個問題,幾個皮棉工具會警告從構造函數調用非最終方法。 (如果班級不是最終的,但是設置方法是這樣的,那就好。) –
@KumarVivekMitra - 我不喜歡你的回答,因爲我對它的評論表明。 –
@TedHopp請再次閱讀我的答案......我認爲我們兩人都在說同一件事情.....還是讓我再一次把它寫在這裏......我認爲你正在採取'OCP'原則,,,類是可以擴展的,但是對於修改是封閉的。正如我所知道的那樣,構造函數不能被繼承,所以不能被覆蓋,所以它的不可變性......' –