簡體   English   中英

如何從靜態調用非靜態方法?

[英]How to call non-static method from static?

我試圖從靜態calldrawScore()調用非靜態drawScore()方法,但我得到了錯誤"cannot find symbol constructor Game"在線Game draw = new Game(); calldrawScore() 當我用鼠標"GameScreen (Game) in Game cannot be applied to ()"過該行時,它說"GameScreen (Game) in Game cannot be applied to ()"

-它的經驗法則是靜態方法無法訪問任何非靜態變量或方法

-這是因為static member屬於class ,其中作為non-static成員屬於object ,所以作為該靜態成員試圖訪問一個非靜態成員它不會清楚的是哪些對象構件正被訪問,所以其JAVA禁止。

也許你可以將“getScore(int x)”改為:

public static int getScore(int x, GameScreen gs) {
        score = x;
        gs.drawScore();
        return score;
    }

現在你可以在“GameScree”中調用它

GameScreen.getScore(valueSome, yourObject);

另一種方法是將所有GameScreen更改為Singleton

您的GameScreen類構造函數將Game類對象作為參數。 您可以獲取當前的Game實例並將其作為參數傳遞,也可以在Gamescreen類中創建默認構造函數。

要做GameScreen d = new GameScreen()你需要為GameScreen提供0參數構造GameScreen 你沒有這樣的構造函數。

無論如何,你的代碼看起來很糟糕,因為你在每個calldrawScore()中都在創建新的GameScreen ...

我想你需要閱讀靜態方法和非靜態方法之間的區別。 然后返回,設計並更好地實施。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM