为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕婉清6462132 2021-12-18 15:49:50
我最近才开始学习 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();

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


查看完整回答
反对 回复 2021-12-18
?
冉冉说

TA贡献1877条经验 获得超1个赞

是的,在这种情况下我不会使用静态变量或方法,所以我会改为


private int health;


public int getHealth() {...}


int newHealth = newPlayer.getHealth();


查看完整回答
反对 回复 2021-12-18
?
HUH函数

TA贡献1836条经验 获得超4个赞

您不能使用类名访问实例方法。

选项1 : newPlayer.getHealth();

选项 2:getHealth()如果需要通过类名访问,则添加静态修饰符。


查看完整回答
反对 回复 2021-12-18
  • 3 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信