cke*_*sch 4 java extends class
我正在开发一个游戏,我使用处理程序对象来处理所有渲染和滴答行为.每个scene对应一个不同的handler对象.我的每个处理程序都有一组特定于该类型处理程序的方法.例如,只有级别处理程序具有addPlayer和addEnemy方法.
我想定义一个这样的泛型Scene类:
public class Scene {
protected Handler handler;
public Scene(Handler handler){
this.handler = handler;
}
public void render(Graphics g){
handler.render(g);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我想定义一个我的场景的子类,它将是特定于玩家玩游戏时的场景对象,称为levelScene:
public class LevelScene extends Scene {
protected LevelHandler; //<- This doesn't work.
}
Run Code Online (Sandbox Code Playgroud)
我想访问特定于LevelHandlerwithin 的方法LevelScene,同时让Scene类处理渲染并使用处理程序进行滴答.看起来这样做的最好方法是指定,对于我的LevelScene类,处理程序是一个LevelHandler,这是一个扩展的类Handler.这样做的最佳方法是什么?
我建议使用泛型.这样,Scene超类将处理程序视为任何其他处理程序,但LevelScene确保它是LevelHandler.
public class Scene<HandlerType extends Handler> {
protected HandlerType handler;
public Scene(HandlerType handler){
this.handler = handler;
}
public void render(Graphics g){
handler.render(g);
}
}
Run Code Online (Sandbox Code Playgroud)
那你的子类就可以了
public class LevelScene extends Scene<LevelHandler> {
@Override
public void render(Graphics g) {
super(g);
handler.doLevelOnlyThing();
}
}
Run Code Online (Sandbox Code Playgroud)