私はAndroid Studioに完全に慣れていないので、@Override
ステートメントAndroid Studio。
@Overrideは Javaアノテーション です。次のメソッド オーバーライド のメソッド スーパークラス であることをコンパイラに伝えます。たとえば、Personクラスを実装するとします。
public class Person {
public final String firstName;
public final String lastName;
//some methods
@Override public boolean equals(Object other) {
...
}
}
Personクラスにはequals()メソッドがあります。 equalsメソッドは、Personのスーパークラス Object で既に定義されています。したがって、上記のequals()の実装は、Personsのequals()の再定義です。つまり、Personはequals()をオーバーライドします。
明示的に注釈を付けずにメソッドをオーバーライドすることは正当です。それでは、@ Overrideアノテーションは何に適していますか?誤ってequals()をオーバーライドしようとした場合:
public boolean equals(Person other) {
...
}
上記のケースにはバグがあります。 equals()をオーバーライドするつもりでしたが、そうしませんでした。どうして?実際のequals()はObjectをパラメーターとして取得し、equals()はPersonをパラメーターとして取得するためです。コンパイラーは、ユーザーがオーバーライドしたいかどうかを知らないため、バグについては通知しません。コンパイラーが知る限り、実際には overload equals()を意味します。しかし、@ Overrideアノテーションを使用して等号をオーバーライドしようとした場合:
@Override public boolean equals(Person other) {
...
}
これで、コンパイラはエラーがあることを認識します。オーバーライドしたいが、そうしなかった。したがって、@ Overrideアノテーションを使用する理由は、メソッドのオーバーライドを明示的に宣言するためです。
そのa Java注釈(Android固有ではない)。このメソッドがメソッドをオーバーライドすることを意味するために使用します。
それを使用する理由は、メソッドをオーバーライドする予定のメソッドを作成するときにエラーをキャッチするためですが、何らかのエラーを介してnotを実行します。メソッド名のタイプミス、メソッドの署名のエラーなど。たとえば、開発者がこれを行う場合があります。
class Foo {
public boolean equals(Foo other) {
...
著者は、これをスーパークラスのequals
メソッドをオーバーライドすることを意図していましたが、そうではありません(パラメータータイプはObject
でなければなりません)。プログラムは正常にコンパイルされますが、作成者が意図したFoo.equals
は使用しません。
class Foo {
@Override
public boolean equals(Foo other) {
...
メソッドは別のメソッドをオーバーライドしないため、コンパイルでエラーが発生します。これにより、問題が早期に指摘され、問題を追跡するデバッグ時間を節約できることを期待しています。
これは、メソッドがスーパークラスからのメソッドをオーバーライドすることをコンパイラに指示するJavaアノテーションです。厳密に必要というわけではありませんが、コンパイル時にエラーをキャッチするのに役立ちます。
@Override
は、Java annotation
です。
メソッド宣言がスーパークラスのメソッド宣言をオーバーライドすることを意図していることを示します。メソッドにこの注釈タイプの注釈が付けられているが、スーパークラスメソッドをオーバーライドしない場合、コンパイラはエラーメッセージを生成する必要があります。
も参照してください
例:
class Parent{
public void foo(){
}
}
class Child extends Parent{
//compile perfect !
@Override
public void foo(){
}
//will show compile time error message here as it is not being overridden
@Override
public void foo(int i){
}
}
これは、Javaの 注釈 です。このメソッドは、スーパークラスのメソッドをオーバーライドすることを意味します。
これは、コンパイラによって予約された特別なものです。Javaアノテーションは、スーパークラスメソッドをオーバーライドしていることを示します。