为什么我需要在这里使用静态?在这种情况下,我似乎不需要它

我最近才开始学习 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 之间有什么区别?这就是让我需要使用静态修饰符的原因吗?


慕婉清6462132
浏览 135回答 3
3回答

不负相思意

你应该int newHealth = Player.getHealth();改为int newHealth = newPlayer.getHealth();由于您当前是在类而不是对象上调用方法,因此该方法必须是静态的,因此编译器会抱怨如果不是。

冉冉说

是的,在这种情况下我不会使用静态变量或方法,所以我会改为private int health;public int getHealth() {...}int newHealth = newPlayer.getHealth();

HUH函数

您不能使用类名访问实例方法。选项1 : newPlayer.getHealth();选项 2:getHealth()如果需要通过类名访问,则添加静态修饰符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java