java - 在 OOP 中更新字段

标签 java oop

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

Class Diagram

我根据类图创建了一个方法 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)调用这个方法时,thisrizen,而karBsubzero。所以 karB 是您需要更新其 lifePoint 的对象。

    karB.lifePoint -= attackKickPoint;

关于java - 在 OOP 中更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48826269/

相关文章:

c# - 通用类多态性

javascript - 如何在 OOP 类中更新对象 json

java - 如何使用共享首选项存储和检索 recyclerview 数据

java - 使用@PathVariable将参数传递给Spring Controller

java - 在我的语法中,字符 '<EOF>' 没有可行的替代方案

php - 如何在不编辑库的情况下覆盖 PHPExcel 方法?

java - 关于封装的问题(Book : HF OOA&D )

java - 如何在java中为数组内的对象属性设置值

java - Java 是否保存其运行时优化?

c# - 在 c# .Net 中创建基于索引的类