我目前的任务是在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个参数(我不应该更改那里的主类代码)。我在这里忘了关于显式调用超类构造函数的东西吗?
答案 0 :(得分:1)
你需要用它期望的参数调用super()(其中5个)。如果一个是静态的,你给它静态值而不是你的参数。对于父类有3个参数的类,它看起来像这样。
MyClass(int arg1, int arg2)
{
super(arg1,arg2,5);
}
答案 1 :(得分:0)
由于SpaceObject无论如何都知道了一个LargeComet半径,我只需要调用Comet构造函数,将4个参数传递给LargeComet构造函数,再加上来自超类的常量。您不再创建任何依赖项了。