[英]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
class
您A
再次創建A
的新實例。 因此該值為3
。 您可以更改構造函數並這樣調用它,
public A(int value) {
num = value;
}
new Post(45);
這樣,當您創建實例時,可以根據需要從任何class
為num分配一個值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.