本記事ではオブジェクト指向の多態性・ポリモーフィズムについて解説しています。
【公式HP】https://flxy.jp/
- 90%以上がフルリモート案件
- 週1〜3日程度の副業向け案件が多い
- 自身のライフスタイルに合った働き方ができる
- 希望に合わせてコーディネーターが最適な提案をしてくれる
- 定期開催される交流会や勉強会で人脈を広げることができる
\ 最短60秒で登録可能! /
目次
オブジェクト指向の多態性・ポリモーフィズムとは?
オブジェクト指向の学習の際に出てくる”多態性・ポリモーフィズム”とは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行う特性を指します。
例えば以下のような図形クラスから継承によって作られた子クラス群があるとしましょう。
各子クラスは親クラスから継承したWriteメソッドをオーバーライドしているとします。
そして、これらの子クラス群に同じ命令を送ると・・・以下の図のように動作するのです。
このように同じ呼び出し方なのに異なる動作をするという特性から多態性/ポリモーフィズムという名前がつけられています。
オブジェクト指向における多態性・ポリモーフィズムとは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行うという特性のことを指す。
多態性・ポリモーフィズムの実現方法
前章で多態性・ポリモーフィズムとはどんなものか大枠は理解できたかと思います。では、そんな多態性・ポリモーフィズムを実現するにはどうすればいいのでしょうか?
多態性・ポリモーフィズムを実現するための文法は特にない
実は多態性・ポリモーフィズム特有の文法などは存在せず、通常のプログラムでも使う「代入の文法」で実現可能となります。
以下Javaの場合の例。
ただし、何も考えず代入の文法を用いるだけでは多態性/ポリモーフィズムは実現することができず、ここで”継承の知識が必要”となってきます。
多態性・ポリモーフィズムの実現には継承の知識も必要
実は先ほどのJavaコードで代入できるパターンと代入できないパターンが存在します。
代入できるパターンというのはズバリ、継承関係における下(子)から上(親)方向に向かっての代入です。
図で示したように継承関係にないクラスからの代入や上から下方向、つまり親側から子側への代入もNGになります。
多態性・ポリモーフィズムは継承関係の子から親への代入を通じて実現可能。
多態性・ポリモーフィズムのメリット
多態性/ポリモーフィズムのイメージと実現方法は理解できたかと思うので、本章ではそのメリットについて解説していきたいと思います。
メリット①同一視して配列を利用する
先ほど出した図形クラスを例にとると、三角も丸も四角も言ってみれば全て図形なので、以下のように配列に格納することができます。(コードはJavaを用いている)
このように配列でまとめることで例えば、わざわざ個別に処理を書かずともループを回して一括で処理なんてこともできるようになるわけです。
メリット②同一視して引数を受け取る
同一視して引数を受け取るというのは実は冒頭の例が該当しています。(以下の図)
これはWriteメソッドが引数としてZukeiを受け取っているからこそ成り立つ図なのです。
多態性/ポリモーフィズムのメリットとして、同一視して配列を利用できたり、同一視して引数を受け取ることができることが挙げられる。
多態性・ポリモーフィズム【まとめ】
- 多態性・ポリモーフィズムとは、同じ命令を送ったにも関わらずそれぞれが独立した固有の処理を行うという特性を指す。
- 多態性・ポリモーフィズムは継承関係の子から親への代入を通じて実現することができる。
- 多態性・ポリモーフィズムのメリットとして、同一視して配列を利用できたり、同一視して引数を受け取ることができることが挙げられる。
本記事で紹介した内容はあくまで触りの部分だけなので、今後の学習が大切になります。以下の記事でオブジェクト指向について学べる書籍を紹介しているので、より深い内容を学びたいという方は記事を覗いてみてください。
ここまで記事を読んでいただきありがとうございました。本記事が多態性・ポリモーフィズムの理解促進に少しでもお役に立てたのなら幸いです。
- 90%以上がフルリモート案件
- 週1〜3日程度の副業向け案件が多い
- 自身のライフスタイルに合った働き方ができる
- 希望に合わせてコーディネーターが最適な提案をしてくれる
- 定期開催される交流会や勉強会で人脈を広げることができる
\ 最短60秒で登録可能! /