2014-01-26 156 views
0

我有代碼看起來像這樣:爲什麼java可以「混合」同一類的不同實例?

player a=new player(4,10,2,3,"You",'@'); 
player b=new player(4,10,12,3,"Him",'@'); 
a.pickUp(new weapon("Lightsaber",true,1,1)); 
System.out.println(a.getPlayerInventory()[0]); 
System.out.println(b.getPlayerInventory()[0]); 

然而,在這一點上,這段代碼的輸出告訴我,B的庫存內容的還包括光劍。 (與玩家A具有相同的對象)。

在java中發生這種情況的原因是什麼?它可能與其他方法是靜態的還是公開的/私人的有關?

我曾嘗試使用Google,但沒有找到任何東西(可能是因爲我不知道這個問題會被調用。)

感謝您的幫助,您可以給我。

+3

靜電場,最有可能的。 – roippi

+0

你是否擁有'玩家'類的代碼? – AntonH

+1

http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html –

回答

3

如果你有一個玩家的庫存爲靜態的,那麼如果A得到了光劍,每個球員都會有同樣的光劍

1

在沒有看到player類我不能肯定地說,實施,但最可能的解釋是包含玩家庫存的數組被聲明爲static,這意味着該類的所有實例都將共享該數組。

相關問題