Polymorphism refers to the ability of executing different operations in response to the same message. Polymorphism can also be static or dynamic. In dynamic polymorphism the response to the message is decided on run-time while in static polymorphism it is decided out of run-time (i.e. on compile-time). The mechanism used to link the message with the method in dynamic polymorphism is known as late or dynamic binding while if the linking is done on compile time it is known as early or static binding.

Polymorphism is implemented using four different mechanisms: