繁体   English   中英

即使我覆盖了抽象的所有内容,获取也不会覆盖错误

[英]Getting does not override error even though i did override everything that was abstract

所以我只为自己的状态模式创建了一个抽象类和两个子类。 但由于一些血腥的原因,我不能运行该程序,因为它给了我这个错误:

java.lang.RuntimeException:无法编译的源代码 - model.cannon.SingleShotState不是抽象的,并且不会覆盖model.cannon.CannonState中的model.cannon.CannonState中的抽象方法shoot(model.cannon.Cannon)。(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)。 可能是什么问题?

将emty构造函数添加到抽象类后,错误消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM