Sometimes the same functionality has to be written for different kinds of inputs. At that time, one can use the same method name with a different set of parameters. Each different set of parameters is known as a method signature. As seen per the example, a single method can have multiple signatures.
public class Displayer {
public void displayName(String firstName) {
System.out.println("Name is: " + firstName);
}
public void displayName(String firstName, String lastName) {
System.out.println("Name is: " + firstName + " " + lastName);
}
public static void main(String[] args) {
Displayer displayer = new Displayer();
displayer.displayName("Ram"); //prints "Name is: Ram"
displayer.displayName("Jon", "Skeet"); //prints "Name is: Jon Skeet"
}
}
The advantage is that the same functionality is called with two different numbers of inputs. While invoking the method according to the input we are passing, (In this case either one string value or two string values) the corresponding method is executed.
Methods can be overloaded:
Based on the number of parameters passed.
Example: method(String s)
and method(String s1, String s2)
.
Based on the order of parameters.
Example: method(int i, float f)
and method(float f, int i))
.
Note: Methods cannot be overloaded by changing just the return type (int method()
is considered the same as String method()
and will throw a RuntimeException
if attempted). If you change the return type you must also change the parameters in order to overload.