2014-01-26 104 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,这意味着该类的所有实例都将共享该数组。

相关问题