亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我需要在這里使用靜態?在這種情況下,我似乎不需要它

為什么我需要在這里使用靜態?在這種情況下,我似乎不需要它

慕婉清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 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號