ポリモーフィズム
【英】polymorphism
ポリモーフィズムとは、「メッセージの送信側とメッセージの受信側が動的に決まる」というオブジェクト指向プログラミング言語が持つ性質のことである。
ポリモーフィズムは、オブジェクト指向設計の原則である「機能と実装の分離」を実現するために欠かせない機能で、オブジェクトを呼び出す側が意識しなくても実行時の条件に合った適切なメソッドが実行できる。ポリモーフィズムは、継承を利用しているため、オーバーライドと同様な機能に見えるが、ポリモーフィズムの場合は機能が置き換わるのではなく、同一名称メソッドであるが振る舞いは異なるメソッドとして働く。
なお、ポリモーフィズムの実現には、動的バインディングという機能がプログラミング言語に備わっている必要がある。SmalltalkやJavaなどは動的バインディングであるが、C++は静的バインディングである。そのため、C++では仮想関数を導入して実行時までバインディングを遅らせることでポリモーフィズムを実現している。
ポリモーフィズム
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/25 01:50 UTC 版)
ポリモーフィズム(英: polymorphism)とは、それぞれ異なる型に一元アクセスできる共通接点の提供[1]、またはそれぞれ異なる型の多重定義を一括表現できる共通記号の提供[2]を目的にした、型理論またはプログラミング言語理論の概念および実装である。この用語は、有機組織および生物の種は様々な形態と段階を持つという生物学の概念からの借用語である[3]。多態性、多相性と邦訳されることが多い。
- ^ Bjarne Stroustrup (2007年2月19日). “Bjarne Stroustrup's C++ Glossary”. 2017年3月8日閲覧。 “polymorphism – providing a single interface to entities of different types.”
- ^ Cardelli, Luca; Wegner, Peter (December 1985). “On understanding types, data abstraction, and polymorphism”. ACM Computing Surveys 17 (4): 471–523. doi:10.1145/6041.6042 .: "Polymorphic types are types whose operations are applicable to values of more than one type."
- ^ “Polymorphism”. The Java™ Tutorials: Learning the Java Language: Interfaces and Inheritance. Oracle. 2021年9月8日閲覧。
- ^ Conallen, J.; Engle, M.; Houston, K.; Maksimchuk, R.; Young, B.; Booch, G. (2007). Object-Oriented Analysis and Design with Applications (3rd ed.). Pearson Education. ISBN 9780132797443
- ^ 重和, 樋口「光の非視覚的作用と概日リズム : 生理的多型性へのアプローチ(生理人類学のキーワード"生理的多型性"の本質に迫る)」『日本生理人類学会誌』第18巻第1号、2013年、39–43頁、doi:10.20718/jjpa.18.1_39。
- ^ polytypismは他の分野で「多型性」と邦訳されることがある[5]。
- ^ C. Strachey – Fundamental Concepts in Programming Languages http://www.itu.dk/courses/BPRD/E2009/fundamental-1967.pdf
- ^ a b Cardelli, Luca; Wegner, Peter (December 1985). “On understanding types, data abstraction, and polymorphism”. ACM Computing Surveys (New York, NY, USA: ACM) 17 (4): 471–523. doi:10.1145/6041.6042. ISSN 0360-0300 .
- ^ ポリタイピックプログラミング(polytypic programming)はジェネリックプログラミングと同一視されることがある。Polytypic Programming in Haskell | SpringerLink
- ^ Allen B. Tucker (28 June 2004). Computer Science Handbook, Second Edition. Taylor & Francis. pp. 91–. ISBN 978-1-58488-360-9
- ^ Pierce, B. C. 2002 Types and Programming Languages. MIT Press.
- ^ Objects and Aspects: Row Polymorphism | Neel Krishnaswami, Department of Computer Science, Carnegie Mellon University
- ^ 実例によるPureScript
- ^ OCamlで構築するモダンWeb:型付きHTML5プログラミングの実際 | 有限会社ITプランニング | 今井 敬吾
- 1 ポリモーフィズムとは
- 2 ポリモーフィズムの概要
- 3 歴史
- 4 単態性と多態性
- 5 関連項目
ポリモーフィズム (polymorphism)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/05/02 14:27 UTC 版)
「クラス (コンピュータ)」の記事における「ポリモーフィズム (polymorphism)」の解説
詳細は「ポリモーフィズム」を参照 クラスを継承する際に、スーパークラスの振る舞いをサブクラスの振る舞いで上書きする(置き換える)ことをオーバーライドという。あるサブクラスのインスタンスがオーバーライドされた振る舞いを持つ場合、インスタンスの具体的な内容(クラス)が分からなくても、インスタンスに対してその振る舞いを実行するよう指示すれば、見かけがスーパークラスと同じ(すなわちインターフェイスが同じ)でありながら、インスタンスの実際のクラスに応じて実行される振る舞い(処理内容)を変えることができる。このようにして、見かけが一緒なのに動作が変わることをポリモーフィズム(ポリモルフィズム)/多様性/多態性/多相性などという。
※この「ポリモーフィズム (polymorphism)」の解説は、「クラス (コンピュータ)」の解説の一部です。
「ポリモーフィズム (polymorphism)」を含む「クラス (コンピュータ)」の記事については、「クラス (コンピュータ)」の概要を参照ください。
- ポリモーフィズムのページへのリンク