2007年2月9日金曜日

ポリモフィズムの解釈

とあるSNSの掲示板で、ポリモフィズム(多態性)の説明に、オーバーロード、オーバーライドの例を用いてることについて、どっちが正しいのか?的話題があったので、自分の考えをまとめてみることにしました。

掲示板のやり取りを見ている限りでは、ある投稿者のコメントにあった、「ポリモフィズムとオーバーロード、オーバライドを無理に絡めようとして考えるから混乱している」の説に一票! …に同意という感じの議論になってまして(どんなだ;)、個々の話している単語についての意味がかみ合ってないように感じます。


自分は、ポリモフィズムは「概念」、オーバーロード、オーバライドは、ポリモフィズムを実現する為の「手法」という認識で、元々違う次元のものだと思ってます。

 ポリモフィズムという概念を、各言語でどのように実現しているか?

ということを説明する例として、オーバーロード、オーバライドが、よく挙げられているだけのことじゃないかなぁ、と。

また、この手の話をする時は、ポリモフィズム の明確な定義を共通認識にしておく必要がありますね。
手っ取り早く、Wikipediaより ポリモーフィズムの項を抜粋すると…

主にオブジェクト指向プログラミングで、あるオブジェクトへの操作が呼び出し側(sender)ではなく、受け手のオブジェクト(receiver)によって定まる特性のこと。

とあります。
この↑説明だと、オーバーロードが、ポリモフィズムを実現しているかどうかは、微妙かもしれません。
各言語のオーバーロードの実装方法によるのかな?


何か自分も書いていて混乱してきました。
結局は、ポリモフィズム実装の例として、オーバーロードもオーバーライドも、両方説明しておくのが良いんじゃないかというのが私の結論です。

とりあえず、私自身、まだオブジェクト指向絡みの本を読んだことがないので(ぉぃ;) 憂鬱本でも読んだ後に、またポリモフィズムの考えについては纏めたいと思います(^^;;;