In object-oriented programming, polymorphism is the provision of a single interface to entities of different types.[2] The concept is borrowed from a principle in biology where an organism or species can have many different forms or stages.[3]
The most commonly recognized major forms of polymorphism are:
Ad hoc polymorphism: defines a common interface for an arbitrary set of individually specified types.
Parametric polymorphism: not specifying concrete types and instead use abstract symbols that can substitute for any type.
Subtyping (also called subtype polymorphism or inclusion polymorphism): when a name denotes instances of many different classes related by some common superclass.[4]
^
Bjarne Stroustrup (February 19, 2007). "Bjarne Stroustrup's C++ Glossary". polymorphism – providing a single interface to entities of different types.
^"Polymorphism". The Java™ Tutorials: Learning the Java Language: Interfaces and Inheritance. Oracle. Retrieved 2021-09-08.
^Conallen, J.; Engle, M.; Houston, K.; Maksimchuk, R.; Young, B.; Booch, G. (2007). Object-Oriented Analysis and Design with Applications (3rd ed.). Pearson Education. ISBN9780132797443.