How many different ways of method overloading in java

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).

  • Overloaded methods are differentiated supported the amount and sort of the parameters passed as an argument to the methods.
  • You can not define quite one method with an equivalent name, Order and therefore the sort of the arguments. it might be a compiler error.
  • The compiler doesn't consider the return type while differentiating the overloaded method. But you can't declare two methods with an equivalent signature and different return type. it'll throw a compile-time error.
    If both methods have an equivalent parameter types, but different return type, then it's impossible . (Java SE 8 Edition, §8.4.2)

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: 

  • The number of parameters in two methods.
  • The data types of the parameters of methods.
  • The Order of the parameters of methods.

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

 

Submit Your Programming Assignment Details