2014-01-06 42 views
-1

好吧,讓我們說我有一個類遊戲的對象。我將遊戲實例化爲遊戲。現在遊戲包含一個對象,startupState。如何從startupState更改遊戲中的int值?如何訪問對象的字段從它包含

很抱歉,如果我措辭不當這...代碼示例:

public class game{ 
    int state; 
    StartupState startupState; 
    public static void main(String[] args){ 
     Game game = new Game(); 
    } 
    public Game(){ 
     state = 0; 
     startupState = new StartupState(); 
    } 
} 
這個代碼,我將如何改變狀態從startupState對象

所以呢?

+1

您是否瞭解過有關字段訪問表達式和變體/訪問器?不要回答這個問題,去查看它。 –

+0

是「遊戲」應該是「遊戲」?另外,嘗試一個setter。 –

+1

您無法從'StartupState'中更改'Game'的實例。你的依賴是另一種方式:'遊戲'知道'StartupState',但'StartupState'不知道'Game'。 –

回答

1

不能從StartupState改變Game對象。後者是一個單獨的類的實例,可能沒有Game的實例存在。但是,您可以反過來,並從game更改startupState(除非它聲明爲final)。要更改state,您需要一個setter(從當前包之外訪問它),或者您需要聲明它public。然後,你可以做

game.setState() // with setter 

game.state = some_int // if it's public 
+0

哦,真不錯,我只會把它公開 – user2155333

+0

,如果你發現,是一個小問題。正如我提到的 - 而Jeroen評論說 - 你不能從'StartupState'中改變'Game'的一個實例。 –

0

我希望我正確解釋這個問題。所以我認爲的StartupState的實例有一個initialState成員變量,可能與它返回它public int getInitialState() {...}實例方法。在這種情況下......世界上沒有真正的直接的方式到Game實例的state成員變量從StartupState類(你想在這裏做什麼,我假定這就是)改變。要做到這一點,你必須從Game類的實例方法調用getInitialState()並設置this.stategetInitialState()調用的返回值。

相關問題