今回は、オーバーロードではなく、オーバーライドです。
オーバーライドとオーバーロードの違いですが
オーバーロードは、同じクラス内でメソッド名が同じで
引数の型、引数の数、引数の並び順がことなるメソッドを複数定義すること。
オーバーライドは、スーパークラス(親)とサブクラス(子)の間で
スーパークラスにあるメソッドをサブクラスで再定義すること。
その際の注意点は
・メソッド名
・戻り値の型
・引数の型
・引数の数
・引数の並び順
これら全てを、完全に一致させる必要があります。
難しいことは省いてオーバーライドを書くとこんな感じです。
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つのメソッド名を使用して
各クラスで適切な処理を行わせることができます。
また、抽象クラスやインターフェイスを利用することで
継承または実装したクラスにオーバーライドを強制させることができます。
† 地球の末路!? †
【このカテゴリーの最新記事】
- no image
- no image