Java开发中如何调用其他类中定义的变量?
问题原因
playerHealth是定义在Player类中的成员变量,默认作用域仅在Player类内部生效,BattleSequence类不在其作用域范围内,因此编译器会抛出无法解析符号的报错。
推荐实现方案(符合OOP封装规范)
- 步骤1:调整
Player类定义,封装血量属性并提供对外开放的访问方法
public class Player { // 私有属性,禁止外部直接修改,符合封装要求 private int playerHealth; // 构造方法,初始化玩家血量 public Player(int initHealth) { this.playerHealth = initHealth; } // 对外开放的get方法,用于获取玩家当前血量 public int getPlayerHealth() { return playerHealth; } // 对外开放的set方法,用于更新玩家血量(战斗扣血、加血时调用) public void setPlayerHealth(int newHealth) { this.playerHealth = newHealth; } }
- 步骤2:修改
BattleSequence类,先实例化Player对象,再通过get方法获取血量
public class BattleSequence { public static void main(String agrs[]) { System.out.println("Welcome to the dungeon!"); // 实例化玩家对象,初始血量设为100 Player currentPlayer = new Player(100); while (currentPlayer.getPlayerHealth() > 0) { System.out.println("---------------------------"); // 此处补充战斗逻辑,扣血时调用currentPlayer.setPlayerHealth()更新血量即可 } } }
可选简化方案(仅适用于全局单玩家场景)
如果你的游戏全局只会存在一个玩家,也可以将playerHealth定义为Player类的静态变量,不需要实例化即可直接调用:
// Player类静态变量定义 public class Player { public static int playerHealth = 100; }
调用时直接使用类名访问即可:
while (Player.playerHealth > 0) { // 战斗逻辑 }
注意:该方案弊端是静态变量为类全局共享属性,若创建多个玩家实例,所有实例的血量会同步变化,不支持多玩家场景。
内容的提问来源于stack exchange,提问作者Epicskylegend
相关产品推荐
相关产品推荐

