1
0

More than 3 years have passed since last update.

オーバーライドについて

オーバーライドの説明

オーバーライドとは、サブクラス内で、スーパークラスで定義しているメソッドと目的が同じであるが、
処理が異なるメソッドを定義する場合に使用します。

オーバーライドのルール

実際にコードをみてみましょう。

class Parents {    //親クラス
    A method(int a){}
}

class Childs extends Parents {   //サブクラス
    A method(int a){}
}

オーバーライドは、メソッド名、引数リストがまったく同じであること
戻り値はスーパークラスと同じ型もしくは、その型のサブクラス型でなければいけません。

また、アクセス修飾子はスーパークラスと同じものか、それよりも公開範囲が広いものを使用しなければいけません。

・アクセス修飾子
public(広い) ⇨ protected ⇨ デフォルト ⇨ private(狭い)

@Override(アノテーション)について

Java言語では@Override(Overrideアノテーション)を付与することで、「このメソッドはオーバーライドしていること」
ということを明示することが可能です。

class X {
    void methodA(){}
}

class Y extend X {
    // methodA()をオーバーライドするつもりが、間違えてmethoda()として定義した場合
    void methoda(){}
}

上記のように、methodA()を誤ってmethoda()と定義してもコンパイルエラーにはなりません。
単純にmethoda()がYクラスで定義したメソッドとして扱われるからです。

class Y extend X {
    @Override
    void methoda(){}
}

@Overrideを使用することでオーバーライドの使用を明示的に定義します。
よってメソッド名が異なる場合、コンパイルエラーが発生します。

まとめ

・オーバーライドは、サブクラス内でスーパークラスで定義しているメソッドと目的が同じであるが、処理が異なるメソッドを定義する場合に使用します。
・オーバーライド時の戻り値の型は、スーパークラスと同じもしくはその型のサブクラス型でなければならない。
・オーバーライド時のアクセス修飾子はスーパークラスと同じものか、それよりも公開範囲が広いものを使用しなければならない。
@Overrideを付与すれば、メソッド名の間違いを防ぐことができる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0