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:
- El número de parámetros en dos métodos.
- Los tipos de datos de los parámetros de los métodos.
- 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); } }
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); } }
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"); } }
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