【发布时间】:2014-01-05 21:07:55
【问题描述】:
我正在用 Java 编写 RTS 游戏,但遇到了多态性问题。为了描述我的问题,我将列出游戏中的一些对象/类:(我将在括号中说明它们每个应该能够做什么)
- 坦克(可以移动,可以攻击)
- 塔(可以攻击)
- 工厂(可以制造坦克)
- 树(可以种植)
- 老虎(可以移动,可以攻击,可以养殖)
在我看来,理想的方法是为每个独特的能力(即可移动、可攻击、可耕作、可构造)设置一个类。这是所有列出的对象都具有的不同能力。它们都是一个 GameObject(层次结构中的最高类,所有对象都有公共数据)。
Movable 包含用于移动对象的所有代码(计算速度、方向、新位置等)。 Attackable 包含用于跟踪目标、射击、更新射击等的代码。其他能力类也是如此。
所以在我看来这将是完美的:
public class Tank extends Movable, Attackable, GameObject {}
public class Tiger extends Movable, Attackable, Farmable, GameObject {}
显然 Java 不允许扩展多个类。而且我不知道如何使用接口来解决我的多态性和类层次结构问题。
有什么想法吗?目标当然是不重复游戏中多个对象共享的代码。
【问题讨论】:
-
使用接口和/或组合。
-
@Radiodef 界面如何提供帮助?如果每个可以移动的对象都实现 Movable 我将不得不在几个类中编写/具有相同的代码。
-
有一些方法可以为您节省一些代码。请记住,一个接口只能调用另一个作为实现的接口上的方法。我会写一个简单的答案来说明我的意思。
标签: java polymorphism hierarchy