【问题标题】:Java - define variables that are different for every instance of a constructor?Java - 为构造函数的每个实例定义不同的变量?
【发布时间】:2015-01-28 22:36:17
【问题描述】:

对不起,如果标题措辞不正确,如果与我在这里描述的不完全一样,请更改它。

所以我正在创建一个程序来模拟一些虚构的生物,并且我需要许多对象来存储关于每个单独生物的不同统计信息,并且可以同时检查所有值。这样做的正确方法是什么?

作为参考,这是我现在拥有的代码。

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

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

【问题讨论】:

  • 只需去掉 static 修饰符,static 修饰符意味着变量存在于类的每个实例中,在某些情况下很有用,但在你的情况下没有。
  • 最好将它们设为私有并使用getters and setters
  • 我建议您阅读基本的 Java 教程,了解 static 的含义以及如何使用它。

标签: java variables methods constructor


【解决方案1】:

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

【讨论】:

  • 是的,就像我想的那样,简单的修复!谢谢!我会尽快接受这个答案。
猜你喜欢
  • 2020-10-19
  • 2021-09-25
  • 2014-01-12
  • 2023-03-02
  • 1970-01-01
  • 2022-11-04
  • 2021-04-28
  • 2013-06-14
  • 2015-04-28
相关资源
最近更新 更多