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
作为参数传递-请参阅我编辑的答案。