java - java中未知的父变量问题

标签 java inheritance

最近我问了一个问题,为什么我在生成的元素中的所有变量都被设置为相同的伤害值(Java switch statements outputting the same numbers)并且该代码不是罪魁祸首,但是经过一些深入的调试后我发现当一个生成元素时它会随机化伤害,然后出于某种原因将伤害设置为每个先前创建的相同类型的元素。

我有扩展我的“项目”类的“ Dagger ”和“剑”类。这是我设置伤害的方式:

case 3: {Sword sword = new Sword(); World[X][Y].treasureName = "sword"; sword.setDamage(4); returnItem = sword; break;}

这是我的元素类别:

public abstract class Item {
//How much damage is added to the players attack.
static int damage = 0;
static int defence = 0;

public int getDefence() {
    return defence;
}

public void setDefence(int defenceValue) {
    defence = defenceValue;
}

public int getDamage() {
    return damage;
}

public void setDamage(int damageValue) {
    damage = damageValue;
}
}

还有我的剑术课:

public class Sword extends Item { 
//How much damage is added to the players attack.
static int damage = 0;
static int defence = 0;

public int getDefence() {
    return defence;
}

public void setDefence(int defenceValue) {
 defence = defenceValue;
}

public int getDamage() {
    return damage;
}

public void setDamage(int damageValue) {
    damage = damageValue;
}
}

我不确定这个问题叫什么,也不确定要用谷歌搜索什么仍然是相当新的。我试图覆盖项目类,但这并没有改变任何东西,我已经阅读了有关继承的内容,但我不明白是哪一部分将所有其他武器实例设置为相同的伤害。我想删除“Item”类中的方法以查看是否可以修复它,但是其他导致错误的代码阻止我在检查和添加“Item”的所有子项的损坏时执行此操作 - 这需要强制转换的(项目),我不确定我还能用什么作为 Actor 。

以下是对“Item”方法的引用:

if (((Item) World[k][i].treasure).getDamage() > 9)
                            {

如果没有转换,错误是:getDamage() undefined object 类型。 和:

//Recalculates the players damage for recently equipped items.
        for (int i = 0; i < numItems; i++) {
            itemdamage += items[i].getDamage();
            System.out.println("You have a " + itemNames[i] + " giving you " + items[i].getDamage() + " extra damage.");
            }

怎么了?我想了解这一点,因此链接到有关原因和我做错了什么的有用信息会很好。谢谢。

最佳答案

static int damage = 0;

拥有静态成员意味着该类的所有对象都具有相同的值。如果删除 static关键字,每个对象都可以有不同的伤害值。

至于所需的类型转换,似乎WorldObject 的数组类型。因此World[k][i]属于 Object类型,你只能调用基类的方法 Object上课。如果要调用 Item 中定义的方法类,你必须投 ObjectItem (假设 Object 的运行时类型是 Item )。

关于java - java中未知的父变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29666115/

相关文章:

java - 在 Java 中比较 XML

c++ - 在 C++ 中,是否可以将一个类声明为从另一个类继承?

ios - 从 UITextField 继承的自定义类在 Swift 中不起作用(使用自定义 init)

hibernate - GORM多态中的抽象类

Java:找出对象的内存大小?

java - 如何重写GenericServlet?

java - 销毁当前类对象并通过线程运行同一个类

java - Tensorflow 模型导入到 Java

c++ - 关于默认构造函数和复制构造函数

c# - 使用多态性和List时访问子类成员