Diferentes formas de sobrecarga de métodos en Java

La sobrecarga de métodos en Java se basa en el número y tipo de parámetros que se pasan como argumento a los métodos. No podemos definir más de un método con el mismo nombre, orden y tipo de argumentos. Sería un error del compilador. El compilador no considera el tipo de retorno al diferenciar el método sobrecargado. Pero no puede declarar dos métodos con la misma firma y diferentes tipos de devolución. Lanzará un error en tiempo de compilación. Si ambos métodos tienen los mismos tipos de parámetros, pero diferentes tipos de devolución, entonces no es posible.

Java puede distinguir los métodos con diferentes firmas de métodos . es decir, los métodos pueden tener el mismo nombre pero con una lista de parámetros diferente (es decir, el número de parámetros, el orden de los parámetros y los tipos de datos de los parámetros) dentro de la misma clase. 

Geeks, ahora sabrán por qué necesitamos la sobrecarga de métodos.

Si necesitamos hacer algún tipo de operación de diferentes maneras, es decir, para diferentes entradas. En el ejemplo que se describe a continuación, estamos realizando la operación de suma para diferentes entradas. Es difícil encontrar muchos nombres significativos para una sola acción. 

Formas de sobrecargar métodos

La sobrecarga de métodos se puede hacer cambiando: 

  1. El número de parámetros en dos métodos.
  2. Los tipos de datos de los parámetros de los métodos.
  3. El Orden de los parámetros de los métodos.

Propongamos ejemplos para ilustrar cada forma mientras sobrecargamos los métodos. Son los siguientes:   

Método 1: Cambiando el número de parámetros . 

Java

// Java Program to Illustrate Method Overloading
// By Changing the Number of Parameters
 
// Importing required classes
import java.io.*;
 
// Class 1
// Helper class
class Addition {
 
    // Method 1
    // Adding two integer values
    public int add(int a, int b)
    {
 
        int sum = a + b;
        return sum;
    }
 
    // Method 2
    // Adding three integer values
    public int add(int a, int b, int c)
    {
 
        int sum = a + b + c;
        return sum;
    }
}
 
// Class 2
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of above class inside main()
        // method
        Addition ob = new Addition();
 
        // Calling method to add 3 numbers
        int sum1 = ob.add(1, 2);
 
        // Printing sum of 2 numbers
        System.out.println("sum of the two integer value :"
                           + sum1);
 
        // Calling method to add 3 numbers
        int sum2 = ob.add(1, 2, 3);
 
        // Printing sum of 3 numbers
        System.out.println(
            "sum of the three integer value :" + sum2);
    }
}
Producción

sum of the two integer value :3
sum of the three integer value :6

Método 2: cambiando los tipos de datos de los parámetros 

Java

// Java Program to Illustrate Method Overloading
// By Changing Data Types of the Parameters
 
// Importing required classes
import java.io.*;
 
// Class 1
// Helper class
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);
    }
}
Producción

sum of the three integer value :6
sum of the three double value :6.0

Método 3: cambiando el orden de los parámetros 

Java

// Java Program to Illustrate Method Overloading
// By changing the Order of the Parameters
 
// Importing required classes
import java.io.*;
 
// Class 1
// Helper class
class Geek {
 
    // Method 1
    public void geekIdentity(String name, int id)
    {
 
        // Printing name and id of person
        System.out.println("geekName :" + name + " "
                           + "Id :" + id);
    }
 
    // Method 2
    public void geekIdentity(int id, String name)
    {
 
        // Again printing name and id of person
        System.out.println("Id :" + id + " "
                           + "geekName :" + name);
    }
}
 
// Class 2
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of above class
        Geek geek = new Geek();
 
        // Passing name and id
        // Note: Reversing order
        geek.geekIdentity("Mohit", 1);
        geek.geekIdentity(2, "shubham");
    }
}
Producción

geekName :Mohit Id :1
geekName :shubham Id :2

Nota: ahora, geeks, deben preguntarse qué sucederá cuando la firma del método sea la misma y el tipo de devolución sea diferente.

Aquí, el compilador dará un error ya que el valor de retorno por sí solo no es suficiente para que el compilador descubra qué función tiene que llamar. Solo si ambos métodos tienen diferentes tipos de parámetros (por lo tanto, tienen una firma diferente), entonces es posible la sobrecarga de métodos.  

Ejemplo 4 

Java

// Java Program to Illustrate Error Thrown in
// Method Overloading When Method Signature is Same and
// ReturnType is Different
 
// Importing required classes
import java.io.*;
 
// Class 1
// Helper class
class Addition {
 
    // Method 1
    // Adding two integer value
    public int add(int a, int b)
    {
        // Summing up
        int sum = a + b;
 
        // Returning the sum
        return sum;
    }
 
    // Method 2
    // Adding three integer value
    public double add(int a, int b)
    {
        double sum = a + b + 0.0;
        return sum;
    }
}
 
// Class 2
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Try block to check for exceptions
        try {
 
            // Creating an object of above class
            Addition ob = new Addition();
 
            // Calling method 1 to sum 2 numbers
            int sum1 = ob.add(1, 2);
 
            // Printing sum of two numbers
            System.out.println(
                "sum of the two integer value :" + sum1);
 
            // Calling method 2 to sum 3 numbers
            int sum2 = ob.add(1, 2);
 
            // Printing sum of three numbers
            System.out.println(
                "sum of the three integer value :" + sum2);
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Display the exceptions on console
            System.out.println(e);
        }
    }
}

Producción:

Artículos relacionados:

Este artículo es una contribución de Nitsdheerendra . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *