0

我试图从 static 调用非静态drawScore()方法,calldrawScore()但我"cannot find symbol constructor Game"Game draw = new Game();. calldrawScore()当我将鼠标移过那条线时,它会说"GameScreen (Game) in Game cannot be applied to ()"

4

4 回答 4

2

-静态方法不能访问任何非静态变量或方法的经验法则。

-因为static member属于classwherenon-static成员属于object,所以当静态成员试图访问非静态成员时,将不清楚正在访问哪个对象成员,因此在 JAVA 中是禁止的。

于 2013-09-10T09:34:00.837 回答
0

也许如果您可以将“getScore(int x)”更改为:

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

现在你可以在“GameScree”中调用它

GameScreen.getScore(valueSome, yourObject);

另一种方法是将所有GameScreen更改为Singleton

于 2013-09-10T09:31:56.803 回答
0

您的类 GameScreen 构造函数将 Game 类对象作为参数。您可以获取当前 Game 实例并将其作为参数传递,也可以在 Gamescreen 类中创建默认构造函数。

于 2013-09-10T09:35:55.480 回答
0

要做到这一点GameScreen d = new GameScreen(),您需要为GameScreen. 你没有这样的构造函数。

无论如何,你的代码看起来很糟糕,因为你GameScreen在每个calldrawScore()......

我认为您需要阅读静态方法和非静态方法之间的区别。然后回去,设计它并更好地实施。

于 2013-09-10T09:37:03.213 回答