- Method overloading
Method overloading is a feature found in various
programming language s such as Ada, C#,C++ and Java 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 infunction call s. When overloading a method, you are really just making a number of different methods that happen to have the same name. It is resolved atcompile time which of these methods are used.Method overloading should not be confused with
ad-hoc polymorphism orvirtual function s. In those, the correct method is chosen at runtime.Constructor overloading
In some
object oriented programming language s, constructors can also be overloaded. In languages that require constructors to have the same name as the declaring class, constructor overloading allows multiple ways of creating an object. The constructors must have different parameter types or numbers of parameters.For example, the class Person below, written in Java, holds data about each person's name and phone number. The constructor is "overloaded" as there are two constructors for the class Person.
In Java, the call
this.name=name
means "set this object's variable called name to the value of the argument "name".Note that the second constructor invokes the first one with the call
this(name, "N/A")
. It must be called on the first line of the constructor and can only be called once per constructor. This is generally considered a good programming practice. It might seem more natural and clear to write the second constructor above as:This would work the same way as the first example. The benefit of calling one constructor from another is that it provides code that is more flexible. Suppose that the names needed to be stored in lower case only. Then only one line would need to be changed:
in the first constructor is changed to
If the same line was repeated in the second constructor, then it would also need to be changed to produce the desired effect.
ee also
*
Factory method pattern
*Object-oriented programming
*Constructor
*Abstraction
*Overriding
*Operator overloading
*Method signature
Wikimedia Foundation. 2010.