子类的参数可以少于其子类吗?

时间:2013-04-23 02:30:49

标签: java inheritance constructor subclass superclass

我目前的任务是在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个参数(我不应该更改那里的主类代码)。我在这里忘了关于显式调用超类构造函数的东西吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

由于SpaceObject无论如何都知道了一个LargeComet半径,我只需要调用Comet构造函数,将4个参数传递给LargeComet构造函数,再加上来自超类的常量。您不再创建任何依赖项了。