簡體   English   中英

如何在一個Java類中更改另一個Java類中的變量,然后從第三個Java類訪問該更改的變量?

[英]How do I change a variable in one java class from another, then access that changed variable from a third java class?

假設我有3個Java類,A,B和C。類A有一個名為num的整數變量,等於3。我希望能夠將num從類B更改為另一個數字(例如45),然后訪問該變量來自C類,因此等於45。我該怎么做?

//First Class
public class A
{
    public int num;

    public A() {
        num = 3;
    }

    public void setNum(int newNum) {
        num = newNum;
    }

    public int getNum() {
        return num;
    }
}

//Second Class
public class B
{
    public static void main(String[] args) {
        A a = new A();
        C c = new C();

        System.out.println(a.getNum());

        a.setNum(45);

        System.out.println(a.getNum());

        c.printStuff();
    }
}

//Third Class
public class C
{
    public void printStuff() {
        A a = new A();

        System.out.println(a.getNum());
    }
}

前兩個print語句輸出預期的3和45,但是即使我在B類中將num的值更改為45,C類中的print語句仍輸出3。

無法獲得所需結果的原因是,您在類C創建了類A的新實例,並且它具有自己的值3 更改在類B定義的類A的實例的值將不會影響此新實例。

請注意,您兩次在類A上調用了new方法,因此您有兩個單獨的實例。

您可以嘗試以下代碼以獲得所需的結果:

//First Class
class A
{
    public int num;

public A() {
    num = 3;
}

public void setNum(int newNum) {
    num = newNum;
}

public int getNum() {
    return num;
}
}

//Second Class
public class B
{
public static void main(String[] args) {
    A a = new A();
    C c = new C();

    System.out.println(a.getNum());

    a.setNum(45);

    System.out.println(a.getNum());

    c.printStuff(a);
}
}

//Third Class
class C
{
public void printStuff(A a) {
    //A a = new A();

    System.out.println(a.getNum());
    }
}

那是因為在C classA再次創建A的新實例。 因此該值為3 您可以更改構造函數並這樣調用它,

public A(int value) {
    num = value;
}

new Post(45);

這樣,當您創建實例時,可以根據需要從任何class為num分配一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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