在子类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++;
}
}
}
答案 0 :(得分:1)
public GreenSlime(Coord loc, Map map, PrintStream log)
{
super(loc,"",4,map,log);
}
我提供了一个空字符串""对于repr,但您可能需要null或其他值。
答案 1 :(得分:0)
在您的代码中,威胁构造函数有一个签名,可以接受5个参数,但是您在哪里尝试只传递3个参数。