簡體   English   中英

在單個實例(Java)中更改靜態變量的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM