所以我只为自己的状态模式创建了一个抽象类和两个子类。但由于一些血腥的原因,我无法运行该程序,因为它给了我这个错误:
java.lang.RuntimeException:无法编译的源代码 - model.cannon.SingleShotState不是抽象的,并且不会覆盖model.cannon.CannonState中的抽象方法shoot(model.cannon.Cannon) 在model.cannon.CannonState。(CannonState.java:14)
问题是,我压倒了它说我不这样做的方法。继承人我的实施:
public abstract class CannonState {
public abstract Missile[] shoot(Cannon cannon);
}
public class SingleShotState extends CannonState{
public SingleShotState(){
}
@Override
public Missile[] shoot(Cannon cannon) {
float x = 1;
float y = (float) Math.tan(Math.toRadians((double)cannon.getAngle()));
Random rand = new Random();
if(rand.nextFloat() < 0.5f){
cannon.setState(new ShotGunState());
}
return new Missile[] {
new Missile(cannon.getX(),cannon.getY(),1*x*cannon.getForce(),-1*y*cannon.getForce())
};
}
}
IDE向我显示没有错误(我正在使用netbeans 8.2)。可能是什么问题?
答案 0 :(得分:0)
在向抽象类添加emty构造函数后,错误消失了。