Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改方法以传递适当的对象属性?_Java_Oop - Fatal编程技术网

Java 如何更改方法以传递适当的对象属性?

Java 如何更改方法以传递适当的对象属性?,java,oop,Java,Oop,我有一个方法: public void dealDmg(int hp) { this.hp = hp; this.hp -= this.dmg; } 但是当我把它用作dmg\u dealer.dealDmg(dmg\u receiver.hp),它不能正常工作,因为dmg_接收器的hp没有减少,但dmg_经销商的hp与dmg_接收器的hp相同,然后dmg_经销商的hp会减少dmg数量。如何更改方法的主体以使其以这种方式工作?如果此表示的对象正在对另一个

我有一个方法:

 public void dealDmg(int hp) {
        this.hp = hp;
        this.hp -= this.dmg;
    }

但是当我把它用作
dmg\u dealer.dealDmg(dmg\u receiver.hp),它不能正常工作,因为dmg_接收器的hp没有减少,但dmg_经销商的hp与dmg_接收器的hp相同,然后dmg_经销商的hp会减少dmg数量。如何更改方法的主体以使其以这种方式工作?

如果此
表示的对象正在对另一个对象造成损害,则
dealDmg
需要对被损害的对象造成损害(假设
dmg
是成员):

public void dealDmg(其他单位){
other.hp-=this.dmg;
}

您需要将
dmg\u receiver
对象传递给方法,而不是
dmg\u receiver.hp
,这样您也可以在
dmg\u receiver
中更新
hp
。更新后的方法应如下所示:

public void dealDmg(DmgReceiver dmg_receiver) {
  this.hp = dmg_receiver.hp;
  dmg_receiver.hp -= this.dmg;
}

我们猜不出“不能正常工作”是什么意思。请澄清问题以及您试图实现的目标。rry,我认为从
dmg_dealer.dealDmg(dmg_receiver.hp)可以清楚地看到这一点行。它将dmg_经销商对象的hp更改为dmg_接收器的hp,然后按dmg减少,当我希望dmg_接收器的hp按dmg_经销商的dmg数量减少时。我试着做一个简单的游戏,所以它只是当攻击者击中并向另一个角色发送dmg时。这是可行的,但是这个方法是在一个单位类中,由几个类(弓箭手、巫师、战士)扩展的,所以我没有一个真正的DmgReceiver类,我应该“插入”吗在DmgReceiver中有一个合适的类对象吗?这个方法是在抽象类单元中,由几个类(如Archer、Wizard、Warrior)扩展,我不知道如何将
放在另一个
字符中。有没有办法通过父类方法中的方法链接两个扩展类?@heckfy88我在原始问题中缺少类名。如果所有相关类都扩展了
Unit
,则需要将
Unit
作为参数传递-请参阅我编辑的答案。