一个子类可以比它的子类拥有更少的参数吗?



我目前的任务是编辑java中的小行星游戏代码。主类已经完成了,但是我必须完成由主控制的游戏中相互作用的对象的类。在游戏的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个参数引用它时出现错误(而且我不应该在那里更改主类代码)。我是不是忘了显式调用超类构造函数?

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

MyClass(int arg1, int arg2)
{
  super(arg1,arg2,5);
}

因为SpaceObject已经知道LargeComet的半径,所以我只需调用Comet构造函数,并将4个参数传递给LargeComet构造函数,再加上来自超类的常量。

最新更新