[英]Change value of a static variable in a single instance (Java)
我才剛剛開始學習Java。 說,如果您創建以下類:
class FamilyMember {
static String lastName = "Doe";
String name;
int age;
}
現在,您為女兒創建一個實例,並將其名字設置為Ann,等等。如果她結婚或決定更改姓氏,您將如何只更改其實例的lastName值而不更改整個類?
首先,我嘗試創建兩個實例:
FamilyMember john = new FamilyMember();
FamilyMember ann = new FamilyMember();
ann.lastName = "Stewart";
但這改變了整個班級。 我嘗試在FamilyMember類中創建一個方法來設置一個新的lastName:
void changeLastName(String newName) {
lastName = newName;
}
甚至嘗試在void之前添加“ static”。 但是所有這些都只是在改變整個類的價值。 我在論壇上發現了類似的問題,但都沒有解決這個特定問題。
但這改變了整個班級。
確實,您將姓氏設為類成員,而不是實例成員。 類成員不與實例綁定。 因此,您看到了您不想要的奇怪行為。
只需刪除靜態。
private String lastName = "Doe";
您可以刪除姓氏的靜態修飾符,如果要為每個實例設置一個默認值,以后可以對其進行修改,則可以為其使用多個構造函數,也可以將setter用作姓氏。
例如:
class FamilyMember {
String lastName;
String name;
int age;
public FamilyMember(final String name, final int age) {
this.lastName = "Doe";
this.name = name;
this.age = age;
}
public FamilyMember(final String lastName, final String name, final int age)
{
this.lastName = lastName;
this.name = name;
this.age = age;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.