public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
私は友人のコードを理解しようとしていましたが、構文の@Overrideがコードに含まれていません。それは何をし、なぜコーディングに必要なのですか?ありがとう。
これは、親クラス(またはJava 6)のインターフェース)のメソッドをオーバーライドしていることをコンパイラに知らせるためのヒントです。
コンパイラがISオーバーライドする関数がないことを検出すると、警告(またはエラー)を出します。
これは、タイプミスやAPIの変更をすばやく特定するのに非常に役立ちます。親クラスのメソッドharvest()
をオーバーライドしようとしているが、harvset()
と綴ると、プログラムは基本クラスをサイレントに呼び出し、_@Override
_なしでは、それについての警告はありません。
同様に、ライブラリを使用している場合、バージョン2のライブラリでは、harvest()
が整数パラメータを取るように変更されているため、それをオーバーライドしなくなりました。繰り返しますが、_@Override
_を使用するとすぐにわかります。
この機能は注釈と呼ばれます。 @Override
は注釈を使用してコンパイラーに通知する構文です。「コンパイラー、親クラスでハーベストの動作を変更しています」とコンパイラーはすぐに「おい、間違った名前を付けている」と言うことができます。コンパイラは、正しく名前を付けるまでコンパイルしません。
したがって、これがなければ@Override
注釈、コンパイラはエラーにならず、新しいメソッド宣言と見なされます。この時点でエラーを認識することは困難です。
@Override
は、基本クラスメソッドをオーバーライドしていることを意味します。 Java6では、インターフェイスからメソッドを実装していることも意味します。メソッドをオーバーライドしていると思うが、タイプミスをしたときに、タイプミスから保護します。