Java 在GridWorld中扩展GUI中的一个类而不更改使用它的其他类
我想更改GridWorld GUI的Java 在GridWorld中扩展GUI中的一个类而不更改使用它的其他类,java,extends,performance,gridworld,Java,Extends,Performance,Gridworld,我想更改GridWorld GUI的DefaultDisplay类,这样我就可以在运行期间更改参与者的图像,因为我使用了代码的jar文件,所以我正在创建DefaultDisplay的子类CustomDisplay 但是,由于创建子类会更改名称,因此我必须创建使用DefaultDisplay的类的子类,以便将它们更新为使用CustomDisplay而不是DefaultDisplay。例如,我必须创建名为CustomMap的DisplayMap的子类,而不是此子类: private Display
DefaultDisplay
类,这样我就可以在运行期间更改参与者的图像,因为我使用了代码的jar文件,所以我正在创建DefaultDisplay
的子类CustomDisplay
但是,由于创建子类会更改名称,因此我必须创建使用DefaultDisplay
的类的子类,以便将它们更新为使用CustomDisplay
而不是DefaultDisplay
。例如,我必须创建名为CustomMap
的DisplayMap
的子类,而不是此子类:
private Display defaultDisplay = new DefaultDisplay();
他说:
private Display customDisplay = new CustomDisplay();
然后,使用DisplayMap
的任何其他类都必须更改为使用CustomMap
。仅仅因为这些类使用了我修改过的类,所以创建所有这些类的子类似乎效率很低
是否可以使CustomDisplay
自动使用,而不是DefaultDisplay
,这样我只需更改一个类
笔记
这个问题似乎很陈腐,但我认为一个通用的答案可以帮助任何找到它的人 问题是关于GridWorld,一个用于教学的简单框架 OP希望进行特定更改,通过引入新的显示类来解决未说明的问题,但无法更改现有类。因此,问题变成了如何引入新的显示类 应用面向对象思想。框架是否支持引入新的显示类? 我们应该检查文档,如果失败,请检查框架的公共类接口:是否有任何方法可以设置显示?我们可以检查网格、参与者,或者其他使用这些的人 不管OP怎么说,有一个明确的声明(其中@Andrew Thompson说)解决了这一要求: “渲染算法如下所示:
继承的整个思想是您的
CustomDisplay
类是一个DefaultDisplay
,因此其他类都不需要知道您已经对它进行了子类化。因此,不需要创建任何其他类的子类。BTW-请参阅。另外,中没有列出DefaultDisplay
。我首先检查了扩展GridWorld,发现了很多信息,但没有任何帮助。官方文件中没有列出GUI。可以找到