Java can distinguish methods with different method signatures. That is, methods can have the same name, but have different parameter lists in the same class (that is, the number of parameters, the order of the parameters, and the data types of the parameters).
Why do we need Method Overloading?
If we need to perform a certain operation in a different way, that is, for different inputs. In the example described below, we add different inputs. It is difficult to find many meaningful names for a single action.
Different ways of doing overloading methods
Method overloading can be done by changing:
Method 1: By changing the number of parameters.
import java.io.*; class Addition { // adding two integer values. public int add(int a, int b) { int sum = a + b; return sum; } // adding three integer values. public int add(int a, int b, int c) { int sum = a + b + c; return sum; } } class GFG { public static void main(String[] args) { Addition ob = new Addition(); int sum1 = ob.add(1, 2); System.out.println("sum of the two integer value :" + sum1); int sum2 = ob.add(1, 2, 3); System.out.println( "sum of the three integer value :" + sum2); } }
Output
sum of the two integer value :3 sum of the three integer value :6
Method 2: By changing the Data types of the parameters
import java.io.*; class Addition { // adding three integer values. public int add(int a, int b, int c) { int sum = a + b + c; return sum; } // adding three double values. public double add(double a, double b, double c) { double sum = a + b + c; return sum; } } class GFG { public static void main(String[] args) { Addition ob = new Addition(); int sum2 = ob.add(1, 2, 3); System.out.println( "sum of the three integer value :" + sum2); double sum3 = ob.add(1.0, 2.0, 3.0); System.out.println("sum of the three double value :" + sum3); } }
Output
sum of the three integer value :6 sum of the three double value :6.0
Method 3: By changing the Order of the parameters
import java.io.*; class Geek { public void geekIdentity(String name, int id) { System.out.println("geekName :" + name + " " + "Id :" + id); } public void geekIdentity(int id, String name) { System.out.println("Id :" + id + " " + "geekName :" + name); } } class GFG { public static void main(String[] args) { Geek geek = new Geek(); geek.geekIdentity("Mohit", 1); geek.geekIdentity("shubham", 2); } }
Output
geekName :Mohit Id :1 geekName :shubham Id :2
What happens when method signature is the same and the return type is different?
The compiler will give an error because the return value alone is not enough for the compiler to determine which function it must call. More details: Java Language Specification: §8.4.2. Method overloading is only possible when the two methods have different parameter types (hence, they have different signatures).
// Example to show error when method signature is same // and return type is different. import java.io.*; class Addition { // adding two integer value. public int add(int a, int b) { int sum = a + b; return sum; } // adding three integer value. public double add(int a, int b) { double sum = a + b + 0.0; return sum; } } class GFG { public static void main(String[] args) { try { Addition ob = new Addition(); int sum1 = ob.add(1, 2); System.out.println( "sum of the two integer value :" + sum1); int sum2 = ob.add(1, 2); System.out.println( "sum of the three integer value :" + sum2); } catch (Exception e) { System.out.println(e); } } }
Output:
16: error: method add(int,int) is already defined in class Addition public double add(int a, int b) ^ 1 error
Australia
UK
UAE
Singapore
Canada
New
Zealand
Malaysia
USA
India
South
Africa
Ireland
Saudi
Arab
Qatar
Kuwait
Hongkong
Copyright 2016-2023 www.programmingshark.com - All Rights Reserved.
Disclaimer : Any type of help and guidance service given by us is just for reference purpose. We never ask any of our clients to submit our solution guide as it is, anywhere.