gpt4 book ai didi

java - 使用继承来改变父类(super class)的接口(interface)

转载 作者:行者123 更新时间:2023-12-01 19:17:51 24 4
gpt4 key购买 nike

我有网络开发背景。我最近一直在玩一些 Java,并遇到了以下问题,该问题似乎源于严格的接口(interface)和数据类型,它们更多地是 Java 的一部分,而不是 PHP 的一部分。

我正在使用现有的物理引擎( Phys2D )来开发某种游戏。该物理引擎具有由 World 管理的 Body 对象,并在世界步进时向它们施加各种力。对于游戏中的 AI 来说, body 具有颜色非常重要(以便可以感知它们),但物理引擎不支持这一点,因此我创建了一个子类,并扩展了 Body 类以包含此 - http://pastebin.com/1nLYWg3w 。现在,当我创建这些 Body 实例时,我可以从 World 中获取它们并获取它们的颜色。

但是,Netbeans 表示它

cannot find symbol
symbol: method getColour()
location: class net.phys2d.raw.Body

因为物理引擎接口(interface)返回的Body对象不包含该方法。我知道,在运行时,所有传递给 WorldBody 对象实际上都是 ColouredBody 的对象> 类型,因此将在其接口(interface)中定义此方法。

如何将颜色附加到 Body 对象而不产生可怕的下划线和警告?我知道我可以更改 Phys2D 本身,但是,除了潜在的许可限制(许可证表明您可以使用 Phys2D 执行此操作),我被告知这是不好的做法。

最佳答案

如果您在运行时知道所有 Body 对象实际上都是 ColouredBody,那么您可以将这些对象转换为 ColouredBody 并调用 获取颜色:

Body body = ...;
ColouredBody colouredBody = (ColouredBody) body;
colouredBody.getColour();

关于java - 使用继承来改变父类(super class)的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5766776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com