In programming language theory and type theory, polymorphism is the use of one symbol to represent multiple different types.
In object-oriented programming, polymorphism is the provision of one interface to entities of different data types. The concept is borrowed from a principle in biology where an organism or species can have many different forms or stages.
The most commonly recognized major forms of polymorphism are: