Help us understand the problem. What is going on with this article?

メソッドをオーバーライドする時にOverrideアノテーションをつけるべき理由

Overrideアノテーション

Java1.5で追加されたアノテーションです。メソッド宣言だけに使えて、親クラスのメソッドをオーバーライドしていることを表現します。Overrideアノテーションをつけなくてもオーバーライドは可能です。では、なぜOverrideアノテーションをつけるべきなのか?というのが本記事になります。

Overrideアノテーションをつけた方が良い理由

以下のような親クラスがあるとします。

Parent.java
public class Parent {

    private String something;

    protected void setSomething(String something) {
        this.something = something;
    }
}

このクラスを継承しsetSomethingメソッドをオーバーライドする必要があったため以下のコードを書きました。

Child.java
public class Child extends Parent {

    protected void setSomething(Integer something) {
        System.out.println(something);
    }
}

引数の型を間違えていますが、正常にコンパイルが通るためそのミスに気付くことができません。このまま気付かずにリリースを迎える、ということはさすがにないと思いますが、思わぬバグとして必ずテストでハマる可能性があります。そして、Overrideアノテーションをつける理由はココにあります。Overrideアノテーションをつけておけば、以下のようにIDEが検知してくれるためそのミスに気付くことができ、事前に問題解決に繋がります(もちろんjavacコマンドでのコンパイルもコンパイラが検知してくれます)
キャプチャ.PNG

また、IDEを使っていれば、設定次第でOverrideアノテーションがついていなくても親クラスのメソッドをオーバーライドしているメソッドがあれば警告を出すことが可能です。つまり、常にOverrideアノテーションを使えば、意図しないオーバーライドを検知することが可能となります。

Overrideアノテーションをつけるべき理由まとめ

  1. オーバーライドしたつもりができていなかった、といったうっかりミスを事前に防ぐことができ予期せぬバグの防止になります。
  2. オーバーライドするつもりじゃなかったけどよく見たらオーバーライドしていた、ということに気付き予期せぬバグの防止になります。

以上です。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした