Java创建一个包含多个对象的类的列表
问题描述:
我想创建一个具有不同属性的类的列表,但是我面临一个问题:当我添加一个新类时,所有其他类都被修改(代码非常大所以我张贴只是一个小样本)Java创建一个包含多个对象的类的列表
public abstract class A{
public static Point Position;
public static int LifePoints;
public static int range;
public static int atackValue;
public static double movementSpeed;
public double getMovementSpeed() {
return movementSpeed;
}
public static void setMovementSpeed(double movement) {//this n funciona
movementSpeed = movement;
}
(...)to make the topic shorter i only show the movement part but class A contains all getters and setters for all movement,position,range,life points and attack value
}
public class B extends A{
public static Point Position;
public static int LifePoints=10000;
public static int range=50;
public static int atackValue=100;
public static double movementSpeed=2;
public A(Point startPoint){
setMovementSpeed(movementSpeed);
setAtackValue(atackValue);
setRange(range);
setLifePoints(LifePoints);
setPosition(startPoint);
}
public class createB(){
(...)
public void create(){
private List<B> list = new ArrayList<B>();
B b = new B(startpoint);
list.add(b);
}
(...)
for(int x=0;x!=list.length();x++){
move(list.get(x));
system.out.println(list.get(x).getMovementSpeed());
}
中的println返回的创建所有的b正确的值(2.0),但每次我创建一个新的b中的所有其他b的停止不动,新的b迁移的速度比前一个。移动功能是由我的老师制作的,并且已被证实能正常工作。我怀疑这个位置不能正常工作,而不是将图片移动2个像素,它只移动一次X。
答
第一点是static
字段是类分配的:所有实例只有一个字段。
虽然您的示例中还存在其他基本错误。
如果您创建子类,它将继承其超类的所有字段。你不需要重复这些。这是整个继承点。你的初始值应该在构造函数中设置。
一个类的构造函数应该在该类中定义并且与该类的名称相同。在类
B
中声明构造函数A
没有任何意义(我想你对这个贴子的调整不够干净)。你的代码似乎也有一些不平衡括号的问题。你似乎有一个方法之外的执行语句(或静态初始化块,但让我们离开这一点),这也没有意义。
如图所示,抽象类
A
是完全多余的。您的方法
create
似乎永远不会返回它创建的列表。你想如何使用它?使用缩进。 Java中的标准是每个嵌套块4个缩进空格。
正确命名您的变量。变量应始终以小写字母开头。以大写字母开头的名称表示类。
总而言之,我感到很多困惑。你应该尝试阅读更多真实项目的代码,以获得对语言的感觉。
你的代码有一个急性“静态itis”的情况。请摆脱大部分静态调节器,以免患者死亡。 – 2013-05-05 20:17:26
从字段中移除静态 – user1121883 2013-05-05 20:18:01
另外,考虑清理您的代码示例。这些领域中的大多数与您的问题无关(或者更确切地说,是同一基本问题的重复表现形式),而且这些领域并没有缩进。 – millimoose 2013-05-05 20:19:36