Function overloading or method overloading
is a feature found in various programming languages such as Ada, C++,
C#, Delphi, D, Java, and Swift, that allows creating several methods with the same name which differ from each other in the type of the input and the output of the function.
The ability of a subclass to override a method allows a class to inherit from a superclass whose behavior is "close enough" and then to modify behavior as needed. The overriding method has the same name, number and type of parameters, and return type as the method that it overrides.