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

使用静态方法作为重写方法的Java,java,object,static,overriding,Java,Object,Static,Overriding,我知道它不受支持,不像php。让我起草我的制度 这是一个2D滚动游戏,有对象(云、星、鸟),有一个普通的“BaseItem”类。不同的事情可能发生在与他们的碰撞,获得更多的生命,失去生命。。。抽象方法BaseItem.EventOnCallation()只会返回一个数组,描述发生了什么变化(获得生命、失去生命、获得奖金等) 到目前为止还不错,但还有另一个“CloudB”与“Cloud”效果相同。是否准确复制eventOnCallation()方法?代码重复。安装“云”并调用其EventLocat

我知道它不受支持,不像php。让我起草我的制度

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

到目前为止还不错,但还有另一个“CloudB”与“Cloud”效果相同。是否准确复制eventOnCallation()方法?代码重复。安装“云”并调用其EventLocation()?更好,但不稳定加载更多不必要的东西。我只是想知道对collate有什么影响

这就是我说的让我们使用静态-它甚至不需要一个物体的实例来知道它的效果-可以有100颗恒星具有相同的效果。 对象在一个向量中。这就是我迭代所有对象的时候,调用eventOnCallation()-exception


我希望一切都很清楚

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

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

public class CloudB extends Cloud { ... }

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

“我希望一切都清楚”=>不是真的。。。这类事情最好用实际代码而不是文字来解释。静态方法与重写无关,它们的用途完全不同。引发了什么异常?然后想象一下类似SuperMario:)“线程中的异常”AWT-EventQueue-0的情况“java.lang.CompatibleClassChangeError:应为非静态方法_BaseItem.EffectOnCallation()”是。但也会调用构造函数云,应跳过它。类似super.super:)的内容是。但也会调用构造函数云,应跳过它。类似super.super:)