Java@Overrideアノテーション
1. 概要
このクイックチュートリアルでは、@Overrideアノテーションの使用方法を見ていきます。
2. @Overrideアノテーション
サブクラスでは、インスタンスメソッドをオーバーライドまたはオーバーロードできます。 オーバーライドは、サブクラスが継承された動作を置き換えていることを示します。 オーバーロードとは、サブクラスが新しい動作を追加するときです。
実際にオーバーライドしようとしたときに、誤って過負荷になることがあります。 Javaでこの間違いを犯すのは簡単です:
public class Machine {
public boolean equals(Machine obj) {
return true;
}
@Test
public void whenTwoDifferentMachines_thenReturnTrue() {
Object first = new Machine();
Object second = new Machine();
assertTrue(first.equals(second));
}
}
驚いたことに、上記のテストは失敗します。 これは、この equalsメソッドがObject#equals をオーバーロードしており、オーバーライドしていないためです。
継承されたメソッドで@Overrideアノテーションを使用して、この間違いから保護することができます。
この例では、equalsメソッドの上に@Overrideアノテーションを追加できます。
@Override
public boolean equals(Machine obj) {
return true;
}
この時点で、コンパイラはエラーを発生させ、equalsをオーバーライドしていないことを通知します。
次に、間違いを修正できます。
@Override
public boolean equals(Object obj) {
return true;
}
誤ってオーバーロードするのは簡単なので、継承されたすべてのメソッドで@Overrideアノテーションを使用することをお勧めします。
3. 結論
このガイドでは、@OverrideアノテーションがJavaでどのように機能するかを見ました。
例の完全なソースコードは、GitHubのにあります。