更新OOP中的字段

时间:2018-02-16 11:56:49

标签: java oop

我在java中有一个关于面向对象的问题。

Class Diagram

我创建了一个基于类图的方法踢和命中,我制作了两个对象Sub-zero和rizen。

我有一个案例研究,当rizen踢出零度以下时,l​​ifepoint的零度值应该像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());
   }

}

2 个答案:

答案 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)thisrizenkarB。因此,subzero是您需要更新karB的人。

lifePoint

答案 1 :(得分:0)

在您的代码中,当前对象this与您传递给karBhit()的对象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命中。