多態性(ポリモーフィズム)
多態性とは、オブジェクト指向プログラミングにおける特徴の一つであり、ある1つのメソッドを呼び出しに対して、オブジェクト毎に異なる機能や動作を示すことを指します。ここでいうメソッドとは、一種の関数(メンバ関数)のことで、オブジェクト指向プログラミングではクラスに内包されている関数のことをメソッドと呼びます。
多態性という特徴は、以下の3つの機能から発現することができます。
・継承
・オーバーロード
・オーバーライド
継承では親クラスから子クラスが引き継いだメソッドを用います。親クラスのオブジェクトであっても子クラスのオブジェクトであってもメソッドは共通して保有しているため、それぞれのオブジェクトが同じメソッドを用います。この場合、動作自体は一緒の場合が多いです。
オーバーロードでは、メソッドの呼び出し元が、引数のデータ型を変えることで、呼び出し先のメソッドが変化します。これによって、オブジェクト毎に異なる動作を示す場合があります。
オーバーライドでは、親クラスのメソッドを子クラスが引き継ぎますが、その時子クラスの作製時に新たに上書きした機能が用いられます。すると、継承の時とは異なり、同じメソッドを用いたにもかかわらず、子クラスでは機能が上書きされているため、子クラス毎に異なる動作を示します。
カプセル化されているので上記3つの特徴は、クラスの外側(カプセルの外側)から見れば分からなくなっており、あるオブジェクトに対して、1つのメソッドを使っているだけであるにもかかわらず、内部で複雑な処理を行ってくれるので、オブジェクト毎に異なる動作を示しているように見えます。