我最近才开始学习 Java。这是我编码的第一天。我有两节课。一个是获取用户输入并输出的类,另一个是具有自己的方法和变量的类。第 1 类:public class Player { // this is my player class private static int health; public void setHealth(int healthToSet) { health = healthToSet; } public static int getHealth() { return health; }}第 2 类:import java.util.Scanner;public class Obtainer { public static void main(String[] args) { System.out.println("Enter a number you'd like to set your health to..."); Scanner userInput = new Scanner(System.in); int givenInt = userInput.nextInt(); Player newPlayer = new Player(); newPlayer.setHealth(givenInt); int newHealth = Player.getHealth(); System.out.println("OK, you have set your health to " + newHealth); userInput.close(); }}Eclipse 提示我添加一个静态修饰符我的 getHealth 方法。在做了私有 int health 之后,我不需要用 setHealth 来做这件事;而不是 private int health = 100;。我知道它说的是静态的,但那是在我向其添加静态修饰符并在我被提示后添加了 getHealth 之后。这有什么意义?除了 setHealth 不返回值而 getHealth 返回值这一事实之外,getHealth 和 setHealth 之间有什么区别?这就是让我需要使用静态修饰符的原因吗?
3 回答
不负相思意
TA贡献1777条经验 获得超10个赞
你应该int newHealth = Player.getHealth();
改为int newHealth = newPlayer.getHealth();
由于您当前是在类而不是对象上调用方法,因此该方法必须是静态的,因此编译器会抱怨如果不是。
冉冉说
TA贡献1877条经验 获得超1个赞
是的,在这种情况下我不会使用静态变量或方法,所以我会改为
private int health;
public int getHealth() {...}
int newHealth = newPlayer.getHealth();
HUH函数
TA贡献1836条经验 获得超4个赞
您不能使用类名访问实例方法。
选项1 : newPlayer.getHealth();
选项 2:getHealth()
如果需要通过类名访问,则添加静态修饰符。
添加回答
举报
0/150
提交
取消