java - 为什么我需要在这里使用静态?在这种情况下,我似乎不需要它
问题描述
我最近刚开始接触 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 之间有什么区别?这就是让我需要使用静态修饰符的原因吗?
解决方案
你应该int newHealth = Player.getHealth();
改为int newHealth = newPlayer.getHealth();
由于您当前是在类而不是对象上调用该方法,因此该方法必须是静态的,因此如果不是,编译器会抱怨。
推荐阅读
- r - ggplot2 - 严格限制 x 和 y 轴
- ruby-on-rails - 使用 exceptions_app 时未清除 Flash
- html - 如何不重叠表和行?
- azure - Azure 函数队列触发器的 Azure 存储模拟器连接字符串
- html - 如何将子列表项(如示例图像)居中?
- vb.net - 从文本框中添加数组值并显示在标签中
- android - 使用 java 代码为 android API 6 和更少的启用-禁用 Wifi 热点和网络共享
- php - Laravel eloquent 属于在列中以逗号分隔的多个 id
- android - 如何阅读 OpenSSL 源代码
- java - 什么是基于 json 路径删除/修改 json 对象的 java 库,或者如何解决 JsonPath 中的以下问题?