如果标题的措辞不正确,请注意,如果不是我在这里所描述的,请更改标题。
所以我正在创建一个程序来模拟一些虚构的生物,我需要很多对象,这些对象都存储有关每个生物的不同统计数据,这些数据可以同时检查。这样做的正确方法是什么?
供参考,这是我现在的代码。
public class Model {
static int mfood;
static int mdefense;
static int mattack;
static int mhealth;
static int msize;
static int magg;
static boolean update = false;
public Model(int food, int meat, int defense, int attack, int health, int agg) {
mfood = food;
msize = size;
mdefense = defense;
mattack = attack;
mhealth = health;
magg = agg;
}
问题是,当然,我有变量存储放入构造函数的值,每次调用构造函数时都会更改这些值。如果我一次只运行一个对象,这很有效,但我最有可能会有十几个。这些值也需要在其他方法中调用,例如
public void Attack() {
mhealth = (mhealth + mdefense) - mattack;
}
mattack变量与mhealth和mdefense变量的对象不同。
感谢您提供的任何帮助,我确信这是一个简单的修复,但我无法在任何地方找到答案。
答案 0 :(得分:3)
您的变量是static
,这意味着它们存在于类级别,而不是单个对象级别。这意味着无论您创建多少个对象(新增),它们都共享相同的变量。删除static
关键字,每个对象都拥有自己的变量副本。