てぃぐれのプログラマwiki

ワクワクに従う

さっくりポリモーフィズムの話

経緯

お兄ちゃん〜。オブジェクト指向の基本である継承ってなぁに?ってこれからプログラミングを勉強する小学生にも教えられるように、言語化しておきたい。

 

ポリモーフィズム(Polymorphism)とは

日本語では「多態性」とも呼ばれるが、その日本語自体が分からないというのはよくあること。

同じ名前のメソッドでも、多様な振る舞いを持つことである。

 

イメージ図

f:id:tigretic:20220318203418j:plain

「なく」という一つの命名に対して、別々の振る舞いを実装することができる。

デザインパターンができるのはこの多態性のおかげである。ニャーというメソッドは何をしたいかわからないが、「なく」という抽象的なメソッドをそれぞれのクラスでコンクリートすることで、より意味が分かる。

 

抽象メソッドを用意して、具体化していくというのは、オブジェクト指向というものだ。

 

これにより、コードが分かりやすく、保守しやすく、拡張しやすい。もし、「羊」クラスが誕生しても、「羊」の中に鹿の鳴き声を実装してあげれば良い。

 

メエエエという名前のメソッドを見なくて済む。

これが多態性のメリットである。しかし、多態性は奥が深い。

それはデザインパターンを見ると分かる。

 

ポリモーフィズムとは同じメソッド名でも振る舞いを多様にできることにより保守性をあげることだ。