Method overloading is a feature found in various programming languages such as C++ that allows the creation of several functions with the same name which differ from each other in terms of the type of the input and the type of the output of the function.
An example of this would be a square function which takes a number and returns the square of that number. In this case, it is often necessary to create different functions for integer and floating point numbers.
Method overloading is usually associated with statically-typed programming languages which enforce type checking in function calls.