如何在另一个java对象上使用一个对象的实例变量

如何在另一个java对象上使用一个对象的实例变量,java,object,Java,Object,我正在做一个简单的游戏。 当我调用战斗方法时,角色受到的伤害是它自己的伤害变量 例如 骑士- 健康:100 损失:20 士兵- 健康:100 损失:10 当我称我的方法为“骑士攻击士兵”和“士兵攻击骑士”时,他们的健康状况如下 骑士->80健康 士兵->90健康 什么时候应该反过来 示例代码 public abstract class BasicCharacter { private double health; private double damage; private double at

我正在做一个简单的游戏。 当我调用战斗方法时,角色受到的伤害是它自己的伤害变量 例如 骑士- 健康:100 损失:20

士兵- 健康:100 损失:10

当我称我的方法为“骑士攻击士兵”和“士兵攻击骑士”时,他们的健康状况如下

骑士->80健康 士兵->90健康

什么时候应该反过来

示例代码

public abstract class BasicCharacter 
{
private double health;
private double damage;
private double attackProbability;
private String name;


public BasicCharacter(double hp,double attp,double d, String n)
{   
    health=hp;
    attackProbability=attp;
    damage=d;
    name=n; 


}


public void setHealth(double hp)
{  
    health=hp;
}

public double getHealth()
{
    return health;
}



public double getDamage()
{
    return damage;
}




public void fight()
{


    double prob=Math.random();

    if(prob<attackProbability)
    {
        JOptionPane.showMessageDialog(null, name+" attacked for " + damage+    "\n" + name + " health " + health +" left");
        health=health-damage;
    }
    else {

        JOptionPane.showMessageDialog(null, name + " missed");
    }


}
}

谢谢

这是因为在你的
fight()
方法中,你从物体自身的伤害中扣除了生命值:

health=health-damage;
你真正想要的可能是:

fight(BasicCharacter target){
    target.setHealth(target.getHealth() - this.damage);
}
您可以在战斗方法中添加一个参数,指示战斗目标。

示例: 骑士进攻战士

一个简单的方法,将处理损坏,发送在您想要损坏的对象和损坏的金额

public void damaging(Object object, Double damage){
 if(object instanceof Soldier){
 ((Soldier)object).setHealth(((Soldier)object).getHealth()-damage);
 }
}

这是在同一个方法中还是在一个单独的方法中,因为所有字符都是该方法的一部分class@thebigone您可以在BasicCharacter的抽象类中实现这一点。因此,任何扩展BasicCharacter的人都将拥有这个defaut实现。您仍然可以选择在子类中重写此方法。为什么有人要使用
对象
?这里甚至不需要
对象
,因为此方法只能用于
士兵
。那么使用
Soldier
或者更好的
BasicCharacter
怎么样?
public void damaging(Object object, Double damage){
 if(object instanceof Soldier){
 ((Soldier)object).setHealth(((Soldier)object).getHealth()-damage);
 }
}