web-dev-qa-db-ja.com

@Overrideはどういう意味ですか?

public class NaiveAlien extends Alien
{

    @Override
    public void harvest(){}

}

私は友人のコードを理解しようとしていましたが、構文の@Overrideがコードに含まれていません。それは何をし、なぜコーディングに必要なのですか?ありがとう。

71
Woong-Sup Jung

これは、親クラス(またはJava 6)のインターフェース)のメソッドをオーバーライドしていることをコンパイラに知らせるためのヒントです。

コンパイラがISオーバーライドする関数がないことを検出すると、警告(またはエラー)を出します。

これは、タイプミスやAPIの変更をすばやく特定するのに非常に役立ちます。親クラスのメソッドharvest()をオーバーライドしようとしているが、harvset()と綴ると、プログラムは基本クラスをサイレントに呼び出し、_@Override_なしでは、それについての警告はありません。

同様に、ライブラリを使用している場合、バージョン2のライブラリでは、harvest()が整数パラメータを取るように変更されているため、それをオーバーライドしなくなりました。繰り返しますが、_@Override_を使用するとすぐにわかります。

126
EboMike

この機能は注釈と呼ばれます。 @Overrideは注釈を使用してコンパイラーに通知する構文です。「コンパイラー、親クラスでハーベストの動作を変更しています」とコンパイラーはすぐに「おい、間違った名前を付けている」と言うことができます。コンパイラは、正しく名前を付けるまでコンパイルしません。

したがって、これがなければ@Override注釈、コンパイラはエラーにならず、新しいメソッド宣言と見なされます。この時点でエラーを認識することは困難です。

27
nitin1706

@Overrideは、基本クラスメソッドをオーバーライドしていることを意味します。 Java6では、インターフェイスからメソッドを実装していることも意味します。メソッドをオーバーライドしていると思うが、タイプミスをしたときに、タイプミスから保護します。

9
fastcodejava