ポリモーフィズム 【polymorphism】 多態性 / 多相性 / ポリモルフィズム

概要

ポリモーフィズム(polymorphism)とは、プログラミング言語の持つ性質の一つで、ある関数メソッドなどが、引数返り値の数やデータ型などの異なる複数の実装を持ち、呼び出し時に使い分けるようにできること。

静的型付けの言語で関数などを定義する際には、引数返り値データ型を指定しなければならないため、処理内容が同じでもデータ型ごとに整数用、浮動小数点数用、複素数型用…といったように異なる(名前の)関数を何度も繰り返し定義しなくてはならず、呼び出し側も型ごとに異なる関数を呼び分けなければならない。

ポリモーフィズムに対応した言語では、同名の関数などを繰り返し定義することができ、型ごとに別々の関数を用意しなくても一つの(共通の名前を持つ)関数としてまとめることができる。ただし、具体的な処理内容は型ごとに個別に記述しなければならない。。

分類

呼び出し側に記述された引数の型や数の違いに応じて、処理系が自動的に合致する実装を選んで呼び出してくれる方式を「アドホック多相」(ad hoc polymorphism)、呼び出し時に型をパラメータとして明示的に指定する方式を「パラメータ多相」あるいは「パラメトリック多相」(parametric polymorphism)という。後者はC言語などでは「テンプレート」(template)、Javaなどでは「ジェネリクス」(generics)と呼ばれる機能として知られる。

また、二つのデータ型基本型と派生型の関係にあるとき、基本型引数に取る関数を定義することにより派生型でも同じように動作させるようにすることができ、これを「サブタイプ多相」「部分型多相」(subtype polymorphism)などという。オブジェクト指向プログラミング言語では親クラスから派生(継承)した子クラスメソッドの内容を上書きオーバーライド)したり、インターフェースで定義されたメソッド実装することによりこれを実現している。

(2019.2.19更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる