Polymorphism technically means that one thing has the ability to take many shapes . In programming terms, the thing is the name of a method and the shape is the behavior performed by the method.
Polymorphism is implemented by overloading a method or by using virtual functions.
Late binding is the binding of a method call to a method definition and is performed at run time if some information is missing at compile time that is known only when the application runs.
Early binding is the binding of a method call to a method definition and is performed at compile time if all the information is available at compile time.
The advantage of run-time polymorphism is that a program can respond to events that occur during execution.
The advantage of compile-time polymorphism is that no time is lost in binding when the program runs because binding is completed when the executable program is created.
An interface specifies a standard method name, argument list, return value, and behavior. Programmers who develop classes and methods define methods that adhere to an interface.
Polymorphism permits an interface to be defined as a set of standard methods and behaviors by using overloaded methods and virtual methods.
A virtual function is a placeholder for the real function that is defined when the programming is running.
Overloading is a technique for implementing polymorphism by defining two or more methods with the same name but different argument lists.