【Java】@Overrideとは何者か

以下のようにJavaのコードに@Overrideという記述がみられます。

これは、一体何ということで、本記事では、@Overrideは、どういう目的で使われるかを紹介します。

オーバーライドとは

ここでは、オーバーライドというものが出てきます。

オーバーライドは、親クラスを継承した子クラスを宣言する際、親クラスのメンバを子クラス側で再定義(上書き)することです。

詳しくは、以下の記事を参照してください。

@Overrideの目的

@Overrideの意味ですが、

@Overrideは、その後に続くメソッドがオーバーライドできているか確認する目的で使われます。

具体例

ParentクラスのactionメソッドをChildクラスでオーバーライドしたいと思います。

public class Parent{
    public void action(){
        System.out.println("This is Parent's action.");
    }
}
public class Child extends Parent{
    @Override
    public void Action(){
        System.out.println("This is Child's action.");
    }
}

しかし、Childクラスの3行目である public void Action(){ でactionメソッドとするところを誤ってActionメソッドとしてしまいました。

メソッド名は、小文字大文字は区別されるため、オーバーライドできていません。

この状態でコンパイルすると、

Child.java:2: error: method does not override or implement a method from a supertype
    @Override
    ^
1 error

となり、エラーとなります。

もしも、Childクラスの2行目 @Override がなければ、文法的に間違っていないため、コンパイルは成功します。

ということで、@Overrideは、オーバーライドできているかを開発者に教えてくれる素晴らしい機能です。

また、明示的に以下のメソッドがオーバーライドしているメソッドであると開発者に教えることもできます。

まとめ

@Overrideは、以下の目的があります。

  1. その後に続くメソッドがオーバーライドできているか確認する
  2. 明示的に以下のメソッドがオーバーライドしているメソッドであると開発者に教える

ですので、オーバーライドするときは、積極的に使っていきましょう!