【发布时间】:2016-05-20 19:46:03
【问题描述】:
我有一个名为 GameEngine 的基类,它应该是我的“游戏引擎”的“核心”。它完成所有的图形处理和物理滴答。但是,我不想将游戏的实际源代码放在此类中。所以这基本上就是我所拥有的:
//GameEngine
void start() {
//While loop to call render() and tick()
}
void render() {
//BufferStrategy, etc.
//[[[[HERE]]]] Call method on subclass
//dispose() and show()
}
void tick() { }
还有……
//SampleGame
public class SampleGame extends GameEngine {
public static void main(String[] args) {
new GameEngine().start();
}
public void render() {
//This gets called before dispose() and show()
}
}
那么,我怎样才能让超类在子类中调用 render() 方法呢?我无法覆盖超类方法,因为它需要在调用子类的 render() 方法之前和之后做一些工作。
谢谢
【问题讨论】:
-
为什么它是一个子类?两者是否还有其他代码共享很多?如果不在超类中创建它的实例,您将无法调用子类的方法。
-
您对OOP、继承和类的基本了解似乎欠缺。你应该可能学习
-
我最初想写一个答案,但这个 Wiki 链接完美地回答了你的问题:en.wikipedia.org/wiki/Template_method_pattern#Example_in_Java
-
谢谢,@Amit,我可能应该,但是,我对 Java 的需求并不大,因为几年后 applet 就会消亡。它仍然会有所帮助。我对其他语言的继承有很好的理解,但这个问题只是一个奇怪的案例。感谢您的关心
-
好的,很抱歉“误读”了您的知识
标签: java inheritance subclass superclass super