2017-09-27 18 views
0

私はゲームコードを書いています。キーボード入力用のKeyAdapterクラスを使用していますが、問題が発生しています。クラス内でオーバーライドできないのはなぜですか?

class Kadapter extends KeyAdapter { 
    @Override 
    public void keyPressed(KeyEvent e) { 
    //here i will write required code 
    } 
} 

を次のように私はすべてのクラスの外にそれを書いていたとき、私は を押したが、私は他の内側にそれを定義した場合、今と仮定し、私はファンクションキーをオーバーライド内の任意のエラーを取得していない午前KeyAdapterクラスの機能を拡張して使用していますここに示すようなクラス

class Arena extends JPanel { 
    Player pl; 

    Arena() { 
    pl = new Player(); 
    } 

    class Kadapter extends KeyAdapter { 
    @Override 
    public void KeyPressed(KeyEvent e) { 
    } 
    } 
} 

次に、keyPressed関数をオーバーライドする際にエラーが発生します。誰も私になぜそれを伝えることができますか私はKadapterクラスでプレーヤクラスの同じインスタンスが必要になるため、アリーナクラス内で定義したかったのです。私は関数を介してそのインスタンスを渡すことができます。私の質問は、ここでarenaクラス内の同じ関数をオーバーライドできないということです。プレーヤーの問題については問題はありませんが、このオーバーライド問題について教えてください。私はそれについて非常に興味があります。

+4

KeyPressedはkeyPressedとは異なります。 Javaは大文字と小文字を区別します。次回は、正確かつ完全なエラーを投稿します:問題の内容と場所を正確に示し、それを読むことは大いに役立ちます。エラーメッセージを読むとすべてが簡単になります。コードをインデントして読みやすくします。タイプミスとして閉じる投票。 –

+0

私はちょうど間違いに気付きました。 –

答えて

0

ネストされたクラスの内部で定義して実装することができます。問題はありません。

これまでのところ、メソッド名にはKeyPressedという問題のみが表示されています。

class Arena extends JPanel { 
    Player pl; 

    Arena() { 
    pl = new Player(); 
    } 

    class Kadapter extends KeyAdapter { 
    @Override 
    public void KeyPressed(KeyEvent e) { 
    } 
    } 
} 

それは、下部ケースとして

kはkeyPressedする必要があります!

+0

ありがとう。ちょうど私は大文字で 'K'を書いていたことに気づいた。それは私の間違いでした。ありがとうございました –

関連する問題