Java使用静态方法作为重写方法

时间:2013-06-07 12:08:42

标签: java object static override

我知道它不支持,不像php。让我起草我的系统。

它是一个2D滚动游戏,具有对象(云,星,鸟),具有通用的“BaseItem”类。与他们碰撞可能会发生不同的事情,获得​​更多的生命,失去生命...等等。一个抽象的方法,BaseItem.eventOnCollat​​ion()只会返回一个数组来描述改变了什么(获得生命,失去生命,获得奖金)等)。

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

当我说让我们使用静态时 - 它甚至不需要让对象的实例知道它的效果 - 可以有100颗具有相同效果的星星。 对象位于Vector中。这是我迭代所有对象,并调用eventOnCollat​​ion() - 异常!

我希望一切都清楚

2 个答案:

答案 0 :(得分:2)

您不应该对您提到的行为使用静态方法。 你可能想要做的是让CloudB扩展Cloud

public class CloudB extends Cloud { ... }

然后你可以使用所有好的东西,比如覆盖方法,抽象方法等......在没有代码重复的情况下对类似的类有不同的行为。

答案 1 :(得分:1)

您可以使CloudB扩展云并覆盖除eventOnLocation()之外的所有方法。 这里没有static