ポリモーフィズム
ウィキペディア フリーな encyclopedia
ポリモーフィズム(英: polymorphism)とは、それぞれ異なる型に一元アクセスできる共通接点の提供[1]、またはそれぞれ異なる型の多重定義を一括表現できる共通記号の提供[2]を目的にした、型理論またはプログラミング言語理論(英語版)の概念および実装である。この用語は、有機組織および生物の種は様々な形態と段階を持つという生物学の概念からの借用語である[3]。多態性、多相性と邦訳されることが多い。
ポリモーフィズムは、通常以下の三種に分けられる。
- アドホック多相
- (ad hoc polymorphism)
- 恣意的な型の集合に一つの共通接点を提供する。関数オーバーロード、Mix-inのいち実装、型クラスなど。
- パラメトリック多相
- (parametric polymorphism)
- 詳細化されていない型要素を内包する抽象的な型に記号表現を提供する。ジェネリクスや関数型言語の型構築子など。
- サブタイピング
- (subtyping)
- サブタイプ多相(subtype polymorphism)やインクルージョン多相(inclusion polymorphism)とも。上位型をその下位型の数々で代替できるようにする[4]。オブジェクト指向の多態性はこれを指す。
この他に、ロー多相(英語版)(row polymorphism)とポリタイピズム(polytypism)[注釈 1]も挙げられることがある。対義語はモノモーフィズム(Monomorphism)である。