gpt4 book ai didi

java - 我可以在扩展 java 中另一个类的类中增加变量的特异性吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:08 24 4
gpt4 key购买 nike

我正在开发一款游戏,我在其中使用处理程序对象来处理所有渲染和滴答行为。每个场景对应一个不同的handler对象。我的每个处理程序都有一组特定于该类型处理程序的方法。例如,只有关卡处理程序有 addPlayeraddEnemy 方法。

我想像这样定义一个通用的 Scene 类:

public class Scene {
protected Handler handler;

public Scene(Handler handler){
this.handler = handler;
}

public void render(Graphics g){
handler.render(g);
}
}

然后我想定义我的场景的一个子类,这将是特定于玩家玩游戏时的场景对象,称为 levelScene:

public class LevelScene extends Scene {
protected LevelHandler; //<- This doesn't work.
}

我想在 LevelScene 中访问特定于 LevelHandler 的方法,同时让 Scene 类处理渲染和滴答处理程序。这样做的最佳方式似乎是指定,对于我的 LevelScene 类,处理程序是 LevelHandler,它是一个扩展 处理程序。执行此操作的最佳方法是什么?

最佳答案

我推荐使用泛型。这样,Scene 父类(super class)就会像对待任何其他处理程序一样对待您的处理程序,但 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);
}
}

那么你的子类就可以了

public class LevelScene extends Scene<LevelHandler> {
@Override
public void render(Graphics g) {
super(g);
handler.doLevelOnlyThing();
}
}

关于java - 我可以在扩展 java 中另一个类的类中增加变量的特异性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com