ユーチューブ動画

オーバーライドとポリモーフィズムについて解説します。

ソースコード

解説

オーバーライドとポリモーフィズムについて解説します。

 

以前の動画(041-抽象クラス-抽象クラスの定義)で抽象クラスや抽象メソッドについて、解説しました。

抽象クラスでは、抽象メソッドを定義することができます。

抽象メソッドを定義すると、サブクラス側にオーバーライドすることを強制することができます

 

オーバーライドについて、以前の動画でも紹介しましたが、決まりは覚えていますか?

そう、戻り値の型、メソッドの名前、引数リストを同じものにして、再定義することでした。

再定義することで、処理を上書きすることができます。

 

では、処理を上書きすることで、どのようなメリットができるのでしょうか。

PrinterクラスのshowDataメソッドでは、printSpeedを表示して、

ComputerクラスのshowDataメソッドでは、周波数を表示するように、メソッドをオーバーライドしています。

オーバーライドして、別々の処理になったわけです。

 

それらのメソッドを利用しているmainメソッドの処理に注目してください。

お互い違うクラスのインスタンスですが、

スーパークラスのデータ型の変数に代入することができています。

ここがポイントです。

サブクラスのインスタンスは、スーパークラスの変数に代入できるということです。

 

スーパークラスの変数に代入されたインスタンスからは、サブクラスに共通のメソッド、

ここでは抽象メソッドを呼び出すことができるようになります。

すると、同じメソッド名でもこの2行は違う動作になります。

片方は、プリントスピード、もう片方は、周波数です。

このように、同じメソッドでも異なる振る舞いを実行できる性質をポリモーフィズムといいます

 

まだ、このサンプルだけでは、ポリモーフィズムのメリットを生み出していません。

さらにどんなメリットが生まれるのかについては、ぜひ、次の動画を参照ください。

 

この段階では、オーバーライドとポリモーフィズムはセットになっていると覚えておくとよいでしょう。

以上、オーバーライドとポリモーフィズムについて解説しました。

 

このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。