【发布时间】:2013-06-07 12:08:42
【问题描述】:
我知道它不支持,不像 php。让我草拟我的系统。
它是一个 2D 滚动游戏,带有对象(云、星、鸟),带有一个常见的“BaseItem”类。与它们发生碰撞时可能会发生不同的事情,获得更多生命,失去生命......等等。抽象方法 BaseItem.eventOnCollation() 只会返回一个描述变化的数组(获得生命,失去生命,获得奖励)等)。
到目前为止还不错,但还有另一个“CloudB”,效果与“Cloud”相同。完全复制 eventOnCollation() 方法?代码重复。 Instatinize "Cloud" 并调用它的 eventOnLocation()?更好,但 instatize 加载更多,不必要的东西。我只是想知道对整理有什么影响。
那就是当我说让我们使用静态 - 它甚至不需要一个对象的实例来知道它的效果 - 可以有 100 颗具有相同效果的星星。 对象在向量中。这是我迭代所有对象的时候,并且会调用 eventOnCollation() - 异常!
我希望一切都清楚
【问题讨论】:
-
"我希望一切都清楚" => 不是真的......这种事情最好用实际代码而不是文字来解释。
-
静态方法与覆盖无关,它们的目的完全不同。
-
抛出了什么异常?
-
然后想象一下 SuperMario 之类的东西 :)
-
“线程“AWT-EventQueue-0”中的异常 java.lang.IncompatibleClassChangeError:需要非静态方法 _BaseItem.effectOnCollation()”
标签: java object static overriding