以下のように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
は、以下の目的があります。
- その後に続くメソッドがオーバーライドできているか確認する
- 明示的に以下のメソッドがオーバーライドしているメソッドであると開発者に教える
ですので、オーバーライドするときは、積極的に使っていきましょう!