'Polymorphism' is an object oriented term. Polymorphism may be defined as the ability of
related objects to respond to the same message with different, but appropriate actions. In
other words, polymorphism means taking more than one form. Polymorphism leads to two
important aspects in Object Oriented terminology – Function Overloading and Function
Overriding. Overloading is the practice of supplying more than one definition for a given
function name in the same scope. The compiler is left to pick the appropriate version of the
function or operator based on the arguments with which it is called. Overriding refers to the
modifications made in the sub class to the inherited methods from the base class to change
their behavior.