首页 > 解决方案 > 为什么我需要在这里使用静态?在这种情况下,我似乎不需要它

问题描述

我最近刚开始接触 Java。这是我编码的第一天。我有两节课。一个是获取用户输入并将其输出的类,另一个是具有自己的方法和变量的类。

第一类:

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 执行此操作;而不是私人 int health = 100;。我知道它说的是静态的,但那是在我被提示添加静态修饰符和 getHealth 之后。这有什么意义?除了 setHealth 不返回任何值而 getHealth 返回值之外,getHealth 和 setHealth 之间有什么区别?这就是让我需要使用静态修饰符的原因吗?

标签: java

解决方案


你应该int newHealth = Player.getHealth();改为int newHealth = newPlayer.getHealth();

由于您当前是在类而不是对象上调用该方法,因此该方法必须是静态的,因此如果不是,编译器会抱怨。


推荐阅读