When to Overload
Consider overloading a method when several methods conceptually do the same thing but require a different number and/or different parameter types. Do not use overloading when two methods do conceptually diffrent things.
Where different functions with the same name are invoked based on the data types of the parameters passed or the number of parameters. In various languages you can overload functions, procedures, constructors, and destructors. Method overloading is a type of polymorphism and is also known as Parametric Polymorphism.
Allows an operator to behave differently based on the types of values used. For example, in some languages the + operator is used both to add numbers (2+2=4) and to concatenate strings ("Mike" + " " + "Prestwood"="Mike Prestwood"). If a language supports developer defined operator overloading, then your custom operator overloading is sometimes referred to as ad-hoc polymorphism.