2016-11-14 4 views
1

私は自分の状態パターンのための1つの抽象クラスと2つのサブクラスを作成しました。しかし、私はこのエラーを与えるので、私はこのプログラムを実行することはできませんいくつかの血の理由のため:私は抽象的なものすべてをオーバーライドしたにもかかわらず、エラーを上書きしないようにする

java.lang.RuntimeException:コンパイル不可能なソースコード - model.cannon.SingleShotStateは抽象ではなく、抽象メソッドの撮影(model.cannon .Cannon)in model.cannon.CannonState at model.cannon.CannonState(CannonState.java:14)

問題は、私はそれが私が言っていない方法をオーバーライドしています。私の実装はHeresです。

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を使用しています)。何が問題になる可能性がありますか?

+1

これは 'Cannon'クラスと同じですか? (そして、同じミサイルクラス?) –

+1

インポートステートメントを確認してください。使用しているミサイルと大砲がまったく同じであることを確認してください。 – Joe

+3

"IDEは私にエラーを表示しません" - "Uncompilable source code"エラーが発生している可能性が高いと思われます。このコードをコンパイルしていないようです... –

答えて

0

抽象クラスにemtyコンストラクタを追加した後にエラーが解消されました。

関連する問題