オーバーライド

オーバーライドは親クラス(スーパークラス)のメソッドを子クラスで再定義することです。
オーバーライドされたメソッドは、以下の特徴があります。

  • スーパークラスで定義したメソッドと同じ名前
  • スーパークラスで定義したメソッドの引数と方も含めて全く同じ
  • スーパークラスで定義したメソッドと同じ戻り値の型

オーバーライドすることのメリット

「super」を使うことで、親クラスのメソッドの機能を呼び出すことができます。
つまり、そのあとに追加したい処理を追加すれば、開発の手間が大幅に削減することができます。
このように、一つのメソッド名でクラスによって異なる機能を持たせることを多様性(ポリモーフィズム)と言います。

オーバーライドの例

以下の例は、ドラクエが元ネタです。
ヒャドの呪文のクラスを作って、そのクラスを継承してヒャダルコの呪文のクラスを作りました。
Hyadoクラスのskillメソッドをオーバーライドして、Hyadalcoクラスのskillメソッドで、「敵全体」という機能を追加しています。
[java title=”Sample.java”]
import Override.Hyadalco;

public class Sample {

public static void main(String[] args) {
Hyadalco hyadalco = new Hyadalco();
hyadalco.skill();
}
}
[/java]

[java title=”Hyado.java”]
package Override;

public class Hyado {
void skill() {
System.out.println("ヒャド:敵単体に呪文小ダメージ");
}
}
[/java]

[java title=”Hyadalco.java”]
package Override;

public class Hyadalco extends Hyado {
@Override
public void skill() {
super.skill();
System.out.println("上記のこと敵全体に行う。");
}
}
[/java]

実行結果

ヒャド:敵単体に呪文小ダメージ
上記のこと敵全体に行う。