0

我目前的任务是在 java 中编辑小行星游戏的代码。主类已经完成,但我必须完成main控制的游戏中交互对象的类。在游戏的 API 中,超类 SpaceObject 的构造函数是这样写的:

public SpaceObject(double xPos, double yPos, double xVel, double yVel, double radius){
    setXPosition(xPos);
    setYPosition(yPos);
    setXVelocity(xVel);
    setYVelocity(yVel);
    setRadius(radius);
}

其子类 Comet 概述为:

Comet(double xPos, double yPos, double xVel, double yVel, double radius){
  super(xPos, yPos, xVel, yVel, radius);
}

最后,问题,子类 LargeComet 概述为:

LargeComet(double xPos, double yPos, double xVel, double yVel){
  super(xPos, yPos, xVel, yVel);
}

而 LargeComet 的半径应该是 40(这个 int 的静态变量在超类 SpaceObject 中)。

我似乎收到了一个错误,但是参数不匹配。我在子类 LargeComet 的构造函数中不能有 5 个参数值,因为这样我在使用 4 个参数引用它的主类中出现错误(而且我不应该在那里更改主类代码)。我在这里忘记了关于显式调用超类构造函数的内容吗?

4

2 回答 2

1

您需要使用它期望的参数(其中 5 个)调用 super()。如果一个是静态的,你给它静态值而不是你的参数。对于其父类接受 3 个参数的类,它看起来像这样。

MyClass(int arg1, int arg2)
{
  super(arg1,arg2,5);
}
于 2013-04-23T02:34:07.583 回答
0

由于 SpaceObject 已经知道 LargeComet 半径,所以我只需调用 Comet 构造函数,将 4 个参数传递给 LargeComet 构造函数,再加上来自超类的常量。您不会创建比现有更多的依赖项。

于 2013-04-23T02:35:51.480 回答