広告

posted by fanblog

2019年12月26日

Java オーバーライド

オーバーライドに似た言葉にオーバーロードというのがありますが
今回は、オーバーロードではなく、オーバーライドです。

オーバーライドとオーバーロードの違いですが
オーバーロードは、同じクラス内でメソッド名が同じで
引数の型、引数の数、引数の並び順がことなるメソッドを複数定義すること。

オーバーライドは、スーパークラス(親)とサブクラス(子)の間で
スーパークラスにあるメソッドをサブクラスで再定義すること。
その際の注意点は

・メソッド名
・戻り値の型
・引数の型
・引数の数
・引数の並び順

これら全てを、完全に一致させる必要があります。

難しいことは省いてオーバーライドを書くとこんな感じです。

class Parent{
 public void show() {
  System.out.println("親クラスのshowです。");
 }
}

class Child extends Parent{
 public void show() {
  System.out.println("子クラスのshowです。");
 }
}

class Demo{
 public static void main(String[] args) {
  Child c = new Child();
  c.show();
 }
}

===== 実行結果 =====

子クラスのshowです。

====================

スーパークラス(親)をサブクラス(子)が継承して
メソッドshowを再定義しているのでサブクラス(子)のメソッドshowが呼ばれます。
もし、スーパークラス(親)をサブクラス(子)が継承して
メソッドshowを再定義していない場合には
「c.show()」でスーパークラス(親)のメソッドshowが呼ばれ以下のようになります。

===== 再定義していない場合の実行結果 =====

親クラスのshowです。

==========================================

スーパークラス(親)を継承してオーバーライドすることで
複数のメソッドを定義する必要がなくなり、1つのメソッド名を使用して
各クラスで適切な処理を行わせることができます。

また、抽象クラスやインターフェイスを利用することで
継承または実装したクラスにオーバーライドを強制させることができます。

地球の末路!?




Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: