我怎样才能覆盖方法?

How can I override methods?

我正在尝试覆盖 init()render()release() 方法,但无法使其正常工作。我查看了有关覆盖的教程并检查了以下内容:

我有2个类:

public class Game {
    public void run() {
        System.out.println("Running!");
        init();
        render();
        release();
    }

    public void init() {}

    public void render() {}

    public void release() {}
}

public class Loader extends Game {

    @Override
    public void init() {
        System.out.println("Initializing");
    }

    @Override
    public void render() {
        System.out.println("Rendering");
    }

    @Override
    public void release() {
        System.out.println("Releasing.");
    }

}

为什么只有 "Running!" 打印到控制台?

您必须使用 运行() 方法覆盖 class Loader 对象而不是 Game 对象以获得所需的结果。

您必须通过在带有@Override 注释的子类中创建一个方法来覆盖Game#运行 函数。

public class Loader extends Game {

    @Override
    public void run() {
        System.out.println("Running from Loader!");
    }

}

当您定义 Game 对象时,您必须实例化一个新的 Loader 对象。

Game game = new Loader();

game.run(); // this object is an instance of Loader so Loader#run() is called.