-4

我知道它不受支持,这与 php 不同。让我起草我的系统。

它是一个 2D 滚动游戏,带有对象(云、星、鸟),带有一个常见的“BaseItem”类。与它们发生碰撞时可能会发生不同的事情,获得​​更多生命,失去生命......等等。抽象方法 BaseItem.eventOnCollat​​ion() 只会返回一个描述发生变化的数组(获得生命,失去生命,获得奖励) ETC)。

到目前为止一切顺利,但还有另一个与“云”效果相同的“CloudB”。完全复制 eventOnCollat​​ion() 方法?代码重复。Instatinize "Cloud" 并调用它的 eventOnLocation()?更好,但 instatize 加载更多,不必要的东西。我只是想知道对整理有什么影响。

那就是当我说让我们使用静态时——它甚至不需要一个对象的实例来知道它的效果——可以有 100 颗具有相同效果的星星。对象在向量中。这是当我迭代所有对象时,会调用 eventOnCollat​​ion() - 异常!

我希望一切都清楚

4

2 回答 2

2

您不应该对您提到的行为使用静态方法。您可能想要做的是进行CloudBextend Cloud

public class CloudB extends Cloud { ... }

然后,您可以使用所有不错的东西,例如覆盖方法、抽象方法等……为类似的类提供不同的行为,而无需重复代码。

于 2013-06-07T12:14:10.887 回答
1

您可以让 CloudB 扩展 Cloud 并覆盖除eventOnLocation(). 这里没有static

于 2013-06-07T12:12:12.430 回答