Polymorphism (computer science)
From Wiki @ Karl Jones dot com
Revision as of 07:20, 20 September 2016 by Karl Jones (Talk | contribs) (Created page with "In programming languages and type theory, '''polymorphism''' (from Greek πολύς, ''polys'', "many, much" and μορφή, ''morphē'', "form, s...")
In programming languages and type theory, polymorphism (from Greek πολύς, polys, "many, much" and μορφή, morphē, "form, shape") is the provision of a single interface to entities of different data types.
Description
A polymorphic type is one whose operations can also be applied to values of some other type, or types.
There are several fundamentally different kinds of polymorphism:
- Ad hoc polymorphism: when a function denotes different and potentially heterogeneous implementations depending on a limited range of individually specified types and combinations. Ad hoc polymorphism is supported in many languages using function overloading.
- Parametric polymorphism: when code is written without mention of any specific type and thus can be used transparently with any number of new types. In the object-oriented programming community, this is often known as generics or generic programming. In the functional programming community, this is often shortened to polymorphism.
- Subtyping (also called subtype polymorphism or inclusion polymorphism): when a name denotes instances of many different classes related by some common superclass. In the object-oriented programming community, this is often simply referred to as polymorphism.
The interaction between parametric polymorphism and subtyping leads to the concepts of variance and bounded quantification.
See also
- Data type
- Duck typing for polymorphism without (static) types
- Polymorphic code (Computer virus terminology)
- System F for a lambda calculus with parametric polymorphism.
- Type class
- Type theory
- Virtual inheritance
External links
- Polymorphism (computer science) @ Wikipedia