多相性とは?
たそうせい
多相性とは、同じ名前の関数やメソッドが異なる型や状況に対して異なる振る舞いをする、プログラミングの重要な概念です。
多相性(ポリモーフィズム)は、オブジェクト指向プログラミングや関数型プログラミングにおける基本的な概念で、「同一のインターフェースで異なる型のデータを統一的に扱える」性質を指します。ギリシャ語の「poly(多)」と「morphe(形)」に由来します。
多相性には主に次の種類があります。
- サブタイプ多相性(部分型多相性): スーパークラスやインターフェースの型として宣言された変数に、そのサブクラスのオブジェクトを代入して扱う方式。オブジェクト指向言語で最もよく見られる形。
- パラメトリック多相性(ジェネリクス): 型をパラメータとして扱い、あらゆる型に対して同じアルゴリズムを適用できる汎用的な関数やクラスを定義する方式。
- アドホック多相性(オーバーロード): 同じ名前の関数を引数の型に応じて複数定義し、呼び出し時に適切な版が選ばれる方式。
サブタイプ多相性の典型例として、「動物」クラスに「鳴く」メソッドを定義し、「犬」「猫」などのサブクラスがそれぞれ独自の実装を持つ場合があります。呼び出し元は「動物」として扱うだけで、実際の動物の種類に応じた鳴き声が自動的に選択されます。この仕組みにより、新しい動物の種類を追加しても既存のコードを変更する必要がありません。
多相性は、コードの再利用性と拡張性を高め、変更に強い設計(開放閉鎖の原則)を実現するための重要な手段です。
使い方・例文
JavaやC#で「図形(Shape)」クラスに「面積を計算する」メソッドを定義し、「円(Circle)」と「長方形(Rectangle)」がそれぞれ独自の計算ロジックを実装することで、どちらの図形を渡しても同じコードで面積を求められます。
この用語をシェア
最終更新: