В дочернем классе GreenSlime
Мне предоставлен конструктор с тремя параметрами (я не могу добавить никаких других переменных экземпляра). Но код продолжает давать ошибку об этой строке: super(loc,map,log);
, что я понимаю, что конструктор должен иметь одинаковое количество параметров. Но мои спецификации говорят, что через родительский конструктор задает все поля. fullcharge
всегда должно быть 4
, а начальное значение для charge
- 0
. Я знаю, что я передаю только 3 параметра вместо 5, но это инструкции моего проекта так говорят. Что я делаю неправильно, и какой лучший подход/решение?Конструкторский вызов дает ошибку-наследование
import java.io.PrintStream;
public class GreenSlime extends Threat {
public GreenSlime(Coord loc, Map map, PrintStream log)
{
super(loc,map,log);
super.fullCharge = 4;
super.charge = 0;
}
}
import java.io.PrintStream;
public abstract class Threat extends Thing {
protected int charge;
protected final int fullCharge;
public Threat(Coord c, String repr, int fullCharge, Map map, PrintStream log)
{
super(c,repr,map,log);
this.fullCharge = fullCharge;
charge = 0;
}
public abstract void spawn(Coord c);
@Override
public void doAction()
{
while(charge != fullCharge)
{
System.out.println("\"+repr()"+"@"+"getLoc()\" speading");
if(this.canPassThrough())
{
spawn(getPrevLoc().step(Direction.N));
spawn(getPrevLoc().step(Direction.S));
spawn(getPrevLoc().step(Direction.E));
spawn(getPrevLoc().step(Direction.W));
}
charge++;
}
}
}
Вы можете установить только окончательное поле только один раз. – immibis
Кроме того, конструктор Threat принимает 5 аргументов, и вы пытаетесь только передать его. – immibis