我有一个关于 java 中面向对象的问题。
我根据类图创建了一个方法 kick 和 hit,并创建了两个对象 Sub-zero 和 rizen。
我有一个案例研究,当 rizen 踢低于零时,低于零的生命点应该减少与攻击命中 rizen 一样多,但我的代码相反,低于零的生命点随着攻击低于零而减少。
public class GameCharacter {
String name;
int lifePoint=100;
int attackHitPoint;
int attackKickPoint;
public GameCharacter (String name,int attackHitPoint, int attackKickPoint){
this.name=name;
this.attackHitPoint=attackHitPoint;
this.attackKickPoint=attackKickPoint;
}
public void hit (GameCharacter karB){
lifePoint-=attackHitPoint;
}
public void kick (GameCharacter karB){
lifePoint-=attackKickPoint;
}
public int getLifePoint() {
return lifePoint;
}
public String getName() {
return name;
}
public static void main (String[] args){
GameCharacter rizen = new GameCharacter("rizen",10 ,20);
GameCharacter subzero = new GameCharacter("zub-zero", 5,25);
rizen.kick(subzero);
System.out.println(subzero.getLifePoint());
}
}
最佳答案
public void kick (GameCharacter karB){
lifePoint-=attackKickPoint;
}
这和你有一样
this.lifePoint -= attackKickPoint;
当你用rizen.kick(subzero)
调用这个方法时,this
是rizen
,而karB
是 subzero
。所以 karB
是您需要更新其 lifePoint
的对象。
karB.lifePoint -= attackKickPoint;
关于java - 在 OOP 中更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48826269/