You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java方法重写失效排查:为何仅输出"Running!"?

为什么重写的方法没执行?

你遇到的问题核心是实例对象的类型不对——虽然你正确重写了父类的方法,但如果运行时创建的是父类Game的实例,而不是子类Loader的实例,Java只会调用父类的空实现,自然看不到子类里的打印内容。

问题重现(你可能的错误写法)

假设你的main方法是这样的:

public class Main {
    public static void main(String[] args) {
        Game game = new Game(); // 这里创建的是父类实例
        game.run();
    }
}

这种情况下,run()里调用的init()、render()、release()都是父类的空方法,所以只会输出Running!。

正确的写法

要让重写的方法生效,你需要创建子类Loader的实例,即使引用类型是父类Game也没关系(Java多态特性):

public class Main {
    public static void main(String[] args) {
        // 方式1:父类引用指向子类对象(多态写法)
        Game game = new Loader();
        game.run();
        
        // 方式2:直接用子类类型的引用
        // Loader loader = new Loader();
        // loader.run();
    }
}

运行结果

执行上面的代码后,控制台会输出:

Running!
Initializing
Rendering
Releasing.

补充说明

Java的多态机制是:当你调用一个方法时,实际执行的是运行时对象所属类的方法。你的重写代码本身完全正确,只是在实例创建的环节选错了对象类型,导致子类的方法没被触发~

内容的提问来源于stack exchange,提问作者hjknvcaesdbuihjase

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:17:50