Overload: means that there are multiple symbol functions that are allowed, and the parameter tables of these functions are different (numbers, types). The overload concept is not "object-oriented programming". The possible implementation of the overload is that the compiler is modified according to the parameter table of different functions, and then these same name functions become different functions.
example:
Function func (p: integer): integer; overload;
Function func (p: string): integer; overload;
After the compiler has been modified, the possible function name is: int_func, str_func, if called
Func (2);
FUNC ('Hello');
The compiler will turn the two lines of code into
INT_FUNC (2);
Str_func ('Hello');
The call entry address of these two functions is static during compilation. This is determined that the method of calling the function entry address is called early binding.
The coverage is:
When the derived class is defined, after the method address of the redeered derived class cannot be given, the calling address cannot be determined during the compilation period, so the base class pointer must be based on different derived classes assigned to it. The pointer is dynamically called in the runtime. This is called evening binding. Quote a Bruce Eckle: "Don't make your silly, if it is not binding, it is not a polymorphism