我最近才学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;
}
}
CLASS 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健康之后,我不需要使用setHealth进行此操作;而不是private int health = 100;。我知道它说的是静态的,但是那是在提示我将static修饰符添加到getHealth之后的。这有什么意义呢?除了setHealth不返回任何值和getHealth返回一个值的事实之外,getHealth和setHealth有什么区别?那是什么让我需要使用静态修饰符?
答案 0 :(得分:1)
您应将int newHealth = Player.getHealth();
更改为int newHealth = newPlayer.getHealth();
由于您当前是在类而不是对象上调用方法,因此该方法必须是静态的,因此编译器会抱怨它不是。
答案 1 :(得分:1)
是的,在这种情况下,我不会使用静态变量或方法,因此我将更改为
private int health;
public int getHealth() {...}
int newHealth = newPlayer.getHealth();
答案 2 :(得分:0)
您不能使用类名访问实例方法。
选项1:
newPlayer.getHealth();
选项2:
如果需要通过类名称访问,请将静态修饰符添加到getHealth()
。