方法没有正确覆盖

时间:2014-07-01 06:34:21

标签: java

public void run(){
    //This method has a lot of code but it calls the method tick 60 times a second and
    //a method called render as many times as it can
    //Other methods are involved to call this but I took them out because there is not problem with them
}

public void tick(){

    tickB();
    //Other code I don't want to get overwritten 
}

public void render(){

    renderB();
    //Other code I don't want to get overwritten 
}

public void tickB(){System.err.println("Not overwriting");}
public void renderB(){System.err.println("Not overwriting");}

如果我运行该代码,我会收到错误消息,但是当我将此项目添加到另一个项目,并扩展MainResources(此类)时,它将无法正常工作。

其他项目

public class Main extends MainResources{

    public void tickB(){
        System.out.println("It worked!");
    }

    public void renderB(){
        System.out.println("It worked!");
    }
}

我的问题是我没有得到“它工作!”,我添加的所有代码都被忽略了。我尝试添加@Override,但这也行不通。我也检查了一切,据我所知,一切都正常运行。

1 个答案:

答案 0 :(得分:0)

如果您直接拨打tickBrenderB,那么唯一时间您将获得被覆盖的消息。每隔一段时间,你就会在超类上调用方法。

目前,您的被覆盖方法正在按预期工作。

这里要注意的重要(和有趣)事情是System.errSystem.out不同,写一个是独立于写另一个。

所以,如果你写这个......

new MainResources().render();
new Main().render();
new Main().tickB();
new Main().renderB();

...但请参阅而不是......

It worked!
It worked!
It worked!
Not overwriting

这只是写入两个输出流的本质。 (它实际上是MainResources件出现了问题。)