【发布时间】:2013-12-09 15:41:15
【问题描述】:
所以我有一个类,叫英雄:
public class Hero {
public static int x;
public static int y;
Hero() {
x=0;
y=0;
}
Hero(int x, int y) {
this.x = x;
this.y = y;
}
public Hero(Hero h) {
this(h.x, h.y);
}
}
我制作了一系列英雄。但是,当我更改 hero[0] 时, hero[1] 和所有其他人也会更改。另外,当我制作另一个英雄时,像这样:
Hero guy = new Hero();
然后像这样改变他的 x:
guy.x = 4;
突然间,我创建的所有 Hero 对象的 x 值为 4。
同一项目中的另一个示例:
import javax.swing.JMenuItem;
public class bonusItem extends JMenuItem{
public static int X;
public static int Y;
bonusItem(String s, int x, int y) {
super(s);
X=x;
Y=y;
}
public void setCols(int cols) {
X = cols;
}
public void setRows(int rows) {
Y = rows;
}
public int getCols() {
return X;
}
public int getRows() {
return Y;
}
}
如果我这样做(当然是在创建数组之后):
bonus[1].setRows(9);
bonus[1].setCols(9);
bonus[0].setRows(8);
bonus[0].setCols(8);
for(int i=0; i<bonusCount; i++)
System.out.println("Bonus " + i + " has " +
bonus[i].getRows() + " rows and "
+ bonus[i].getCols() + " columns.");
输出是: Bonus 0 有 8 行和 8 列。 Bonus 1 有 8 行 8 列。
我真的很想拥有一个离散对象数组,而不是这里发生的任何事情。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
它完全按照您的指示行事。您需要了解
static的含义。 -
为了扩展 Hanky Panky 的答案,
static的重点是产生您观察到的确切行为 - 有时,这正是您想要的! -
很高兴知道,谢谢!