Java - 为构造函数的每个实例定义不同的变量?

时间:2014-11-30 23:38:42

标签: java variables methods constructor

如果标题的措辞不正确,请注意,如果不是我在这里所描述的,请更改标题。

所以我正在创建一个程序来模拟一些虚构的生物,我需要很多对象,这些对象都存储有关每个生物的不同统计数据,这些数据可以同时检查。这样做的正确方法是什么?

供参考,这是我现在的代码。

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变量的对象不同。

感谢您提供的任何帮助,我确信这是一个简单的修复,但我无法在任何地方找到答案。

1 个答案:

答案 0 :(得分:3)

您的变量是static,这意味着它们存在于类级别,而不是单个对象级别。这意味着无论您创建多少个对象(新增),它们都共享相同的变量。删除static关键字,每个对象都拥有自己的变量副本。