我在java中有一个关于面向对象的问题。
我创建了一个基于类图的方法踢和命中,我制作了两个对象Sub-zero和rizen。
我有一个案例研究,当rizen踢出零度以下时,lifepoint的零度值应该像attackhit rizen一样减少,但是我的代码而不是lifepoint的零度值会随着attackhit的零度下降而减少。
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());
}
}
答案 0 :(得分:3)
name_x tag_x x y name_y tag_y position1 position2
0 001_Dc F 243 567 jps_043 EW 908 219
这就像你有
一样public void kick (GameCharacter karB){
lifePoint-=attackKickPoint;
}
当您使用 this.lifePoint -= attackKickPoint;
调用此方法时,rizen.kick(subzero)
为this
,rizen
为karB
。因此,subzero
是您需要更新karB
的人。
lifePoint
答案 1 :(得分:0)
在您的代码中,当前对象this
与您传递给karB
和hit()
的对象kick()
之间没有互动。您需要将它们链接起来,即在另一个对象上调用方法或使用其属性。
看看这段代码,例如:
public void hit (GameCharacter karB){
this.lifePoint -= karB.attackHitPoint;
}
public void kick (GameCharacter karB){
karB.hit(this);
}
在hit()
中,您现在可以通过另一个对象lifePoint
的{{1}}减少当前对象的attackHitPoint
。同样适用于karB
,我们现在将两个对象链接起来并告诉Java使kick()
被当前字符karB
命中。