Java:无法将对象解析为变量

时间:2015-01-28 20:13:12

标签: java variables object

我的对象显然无法解析为变量......

在Game.Java中:

public static void main(String[] args) {
    Slime slime = new Slime();
}

在Player.Java中:

public static void Attack() {
    System.out.println("Player attacks!");
    int dmg = ATTACK;
    System.out.println(dmg + " damage to Slime!");
    slime.HP -= dmg;
    System.out.println(Player.HP);
}

那么我如何从史莱姆的HP中取出dmg?我做了一些研究,这仍然没有意义。

1 个答案:

答案 0 :(得分:2)

Player.java需要引用slime,或者需要通过Attack()方法传入。实际上,第二个更有意义。

public void attack(Slime opponent) {
    int dmg = ATTACK;
    opponent.HP -= dmg;
}

这将允许你攻击"多种不同的粘液。

另一种方法是在Player类本身中存储对slime的引用:

public class Player {
    private Slime slime;
    private static final int ATTACK = 10; // or something

    public void setSlime(Slime slime) {
        this.slime = slime;
    }

    public void attack() {
        int dmg = ATTACK;
        slime.HP -= dmg;
    }
}

实际上,除非你给Player一些了解Slime实例的方法,否则它不会影响Slime实例。

我确实注意到你主要使用的是静态方法,但在这里我已经将类变量和非静态方法用于OOP目的。

此外,Java编码约定是方法调用应该具有小写名称,这就是我选择attack()Attack()的原因。