【问题标题】:Having an issue with inheritance. Need to call subclass method from a manager class?继承问题。需要从管理器类调用子类方法?
【发布时间】:2017-09-08 23:41:06
【问题描述】:

我目前正在编写一个程序,它将在四个不同的“赛车手”之间进行比赛。这些赛车手中的每一个都以独特的方式移动,因此必须有自己的班级。这四个独特的“racerType”类必须是通用“Racer”超类的子类。所有实际的比赛都必须在“经理”类中完成。比赛跑到 100 个单位,第一个达到这个距离的选手获胜。

要求如下:

作为单个赛车手类的超类的通用赛车手类。它不需要 是抽象的,但不打算实例化为对象。

上述每种赛车类型的特定赛车类别。这些类都是通用赛车类的子类。

一个经理类,它创建至少一个上述每种类型的赛车手,模拟一场比赛,并通知用户获胜者。注意:GUI 不是必需的,也不需要。

我在使它正常工作时遇到了一些问题,我不确定我是否以一种有效的方式设计它。

我有一个 Manager 类、一个 Racer 超类和四个 RacerType_ 子类。每个 RacerType_ 子类都有自己的运动模式。我想不通的是如何从 Manager 类,甚至是 Racer 超类中调用独特的运动方法。调用四种不同的运动方法,然后跟踪它们的值以添加到每个赛车手位置的总距离中的最佳方法是什么?

【问题讨论】:

标签: java class inheritance


【解决方案1】:

使您的 Racer 超类抽象并包含一个名为 move 的抽象方法。然后,当您将 Racer 扩展到每个 Racer 类型时,您可以编写唯一的方法,这些方法都返回一个指示要移动的距离的值。

这使您可以创建赛车手列表并直接从数组中调用 move 方法

喜欢这个

Racer racerLists[] = new Racer[4];
racerLists[0] = new Motorcycle();
racerLists[1] = new Car();
racerLists[2] = new Bike();
racerLists[4] = new Runner();

for(int i=0; i<racerLists.length; i++)
{
    racerLists[i].move();
}

每个赛车手都会调用他们独特的移动方法。

如果这回答了您的问题,请不要忘记将其标记为答案。 谢谢

【讨论】:

  • 如果您在谈论迭代器 i,我还没有弄清楚如何将其设为小写。该软件会不断将其从 i 自动更正为 I。
  • racerLists[4] 似乎是错误的。你的意思是racerLists[3]
猜你喜欢
  • 1970-01-01
  • 2014-05-10
  • 2015-09-10
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
相关资源
最近更新 更多