多様性(ポリモーフィズム)とは vol.52
以前紹介したオブジェクト指向では、3大要素がある。
その三大要素は、まずこれまででも説明した継承がある。これが一つ目の要素。
残り二つは今回紹介する。多様性とあとは、カプセル化というものがある。
オブジェクト指向の三大要素
・継承
・多様性
・カプセル化
1.多様性とは
多様性とは、あるものを敢えてザックリ捉えるということ。
一番上のイメージ図も多様性の考え方である。
プログラマ、営業、事務職は従業員というような従業員というザックリとした考え方が多様性。
多様性には、カプセル化(private、public、protected)や、継承(extends)のような特別な文法はない。
*カプセル化は今後説明する。
2.現実世界の例で例える
例)車が三台あるとする。
トヨタ、ホンダ、日産のように三台の異なったメーカーがあるとする。
これを多様性の考え方でとらえるなら、どうなるかというとメーカーで考えるのではなく、三台とも車というザックリとした種類で考えるということ。
例)車でクラスを作っていく場合
前回まで説明してきた継承を用いた説明となる。
一番の子クラスである、プリウスクラス(Prius)というものがある。
その上の親クラスとしてトヨタクラス(Toyota)がある。
さらにその上には車クラス(Car)があるとする。
プリウスクラスのインスタンスを生成するときは
Purius p = new Prius();
のように記述するのが基本だった。
次に書くのは多様性(ざっくりCarクラスとして捉える)書き方
Car c = new Prius();
この書き方は車クラスという箱の中に、プリウスクラスという中身が入っているような書き方となる。
中身としてはプリウスクラスなのだが、あえて車クラスとして捉えているような書き方となっている。
左辺が箱の型、右辺が中身の型ということなる関係性である。
3考え方
多様性や親クラス子クラスの考え方として、
車という枠組みの中でプリウスなどの車種があるのははかる。
車という枠組みは、ざっくりとらえる側、親クラスとしての役割があると考えられる。
プリウスが車に対しての枠組みになることはない。
多様性の考えでも、iphoneと車は別の枠組みであるので、
Car c = new iphone();のようになることはない。
多様性はある枠組みの中のものがその枠組みのことを指すことで成り立つオブジェクト指向の一つの考え方ということだ。
今回は多様性がどういったものかについての説明だった。
要するに枠組みとしてざっくり考えること。
具体的な使い方や、メリットについては今後説明していこうと思う。
今回は以上
では、また次回
元体育会系文系エンジニア石黒