Polymorphism means having one name and many forms or shape. The term polymorphism comes from Greek roots. In Greek "poly" means many and "morphe" means form.
Polymorphism is the ability to take more than one form.
There are two types of polymorphism:
Compile time(Static) polymorphism
Run time(Dynamic) polymorphism
Compile time polymorphism is achieved through function overloading, operator overloading and constructor overloading. Run time polymorphism is achieved through virtual functions and function overriding.