2013-04-23 4 views
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 (статическую переменную для этого ИНТ в суперкласса SpaceObject).

Я, кажется, получаю сообщение об ошибке, но параметры не совпадают. Я не могу иметь 5 значений параметров в конструкторе подкласса LargeComet, потому что тогда я получаю ошибку в главном классе, ссылаясь на нее с 4 параметрами (и я не должен менять код основных классов там). Я что-то забыл о явном вызове конструктора суперкласса?

+0

Попробуйте 'super (xPos, yPos, xVel, yVel, 40);'. – michaelb958

+0

Хороший лорд, это сработало T_T Спасибо! И нижеприведенные комментарии дают мне понять, почему. Я новичок в этой вещи. Спасибо вам всем! –

ответ

1

Вам нужно вызвать super() с аргументами, которые он ожидает (5 из них). Если он статичен, вы ставите его вместо своих аргументов. Для класса, родитель которого принимает 3 аргумента, он будет выглядеть примерно так.

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

С SpaceObject знает о радиусе LargeComet уже во всяком случае, я бы просто вызвать конструктор Comet с 4 параметрами, передаваемыми в конструктор LargeComet, плюс константа из суперкласса. Вы не создаете больше зависимостей, чем есть.

Смежные вопросы