2013-10-14 150 views
2

我一直在尋找這個問題的答案整天。如何從Java中的多個類訪問相同的對象

我有一個值類,只要程序正在運行,它就會保存各種值。

我在類A中創建一個新的Value對象,並存儲一個int值。
A類還有一個printMoney()方法。

public class A { 
Value value = new Value(); 
value.setMoney(100); 

public void printMoney { 
System.out.println(value.getMoney); 
} 

在B類,我希望能夠從A類調用printMoney(),所以邏輯上我做到以下幾點:

public class B { 
A a = new A(); 

a.printMoney(); 
} 

這確實,但是,回 '0' 作爲值而不是'100'。

我明白通過創建一個A對象,我會自動創建一個新的值對象,該對象具有其默認貨幣值。所以,基本上我的問題是,我該如何解決這個問題?

+0

什麼是'value.getMoney'?這不是一個方法調用,你沒有顯示你的'Value'類的代碼。我懷疑問題在那裏。 –

+1

Concur..the line value.setMoney(100);在方法之外並且在類標題中。這甚至編譯? – henderso

回答

5

使對象變爲靜態。 static Value value = new Value();

  • static變量跨所有對象
  • 所以在static變量所作的變化將反映爲類的所有對象共享。
1

,如果你想在一個你必須分配在一個construtor值該值,如

public class A { 
    Value value = new Value(); 

    public A() { 
    this.value.setMoney(100); 
    } 

否則,您可以使值靜態

+0

我選擇將其設爲靜態。感謝您的回答。 – DaanBakbanaan

0

您應該收到實例創建對象B並保存它,那麼你可以稱之爲 像這樣:

public class A { 
    B b = new B(this); 
} 

public class B { 
    A a; 

    public B(A a) { 
     this.a = a; 
    } 

    private someMethod() { 
     a.printMoney(); 
    } 
} 
相關問題