Sobrecarga de métodos no válidos en Java

Los métodos sobrecargados son aquellos que pertenecen a la misma clase, tienen el mismo nombre pero diferentes argumentos. El concepto de sobrecarga de métodos proviene del polimorfismo . Literalmente, «poli» significa muchos y «morfismo» significa forma. 

Considere un ejemplo de la vida real del agua como polimórfica porque puede tomar muchas formas (sólido, líquido y gaseoso). De manera similar, en Java, podemos crear múltiples métodos con el mismo nombre en la misma clase. Aquí discutiremos la sobrecarga de métodos no válidos en Java, pero antes de eso, revisemos brevemente la sobrecarga de métodos.

Condiciones para la sobrecarga de métodos

  • Podemos crear múltiples métodos del mismo nombre en la misma clase.
  • El número de argumentos, la secuencia de argumentos y los tipos de argumentos deben diferir.

Ilustración: sobrecarga del método 

Java

// Java Program to Illustrate Method Overloading
 
// Main class
class GFG {
 
    // Method 1
    void show()
    {
        // Print statement
        System.out.println("Method to be overloaded.");
    }
 
    // Method 2
    // Overloading Method 1
    // by changing arguments
    void show(int x)
    {
        // Print statement
        System.out.println("Overloaded method:: 1");
    }
 
    // Method 3
    // Overloading show method by changing arguments
    void show(String a, int x)
    {
        System.out.println("Overloaded method:: " + x);
    }
 
    // Method 4
    // Overloading show method
    // by changing arguments
    void show(String a, int b, boolean c)
    {
        System.out.println("Overloaded method:: " + b);
    }
 
    // Method 5
    // Overloading Method 1 by
    // changing arguments as well as return type
    String show(String s)
    {
        // Print statement
        return "Overloaded method:: 5";
    }
 
    // Method 6
    // Main driver method
    public static void main(String[] args)
    {
        // Creating object of class inside main()
        GFG obj = new GFG();
 
        // Calling all methods as defined above
        // to seek overloading concepts
        obj.show();
        obj.show(1);
        obj.show("String", 2);
        obj.show("String", 3, true);
        System.out.println(obj.show("String"));
        obj.show('a');
    }
}

Producción-

Method to be overloaded.
Overloaded method:: 1
Overloaded method:: 2
Overloaded method:: 3
Overloaded method:: 5
Overloaded method:: 1

¿Cuándo surgen los casos de sobrecarga de métodos no válidos?

Los casos de sobrecarga de métodos no válidos surgen debido a la siguiente razón:

  1. Si intentamos llamar a más de un método con el mismo nombre y lista de argumentos. Esto se puede justificar a partir del bloque de código 1.
  2. Cuando tratamos de sobrecargar el método cambiando solo el tipo de retorno. Esto se puede justificar a partir del bloque de código 2.

Implementación:

Considere el ejemplo dado a continuación. Cuando intentemos llamar al método » add(1,2) «, el compilador se confundirá ya que no existe tal instrucción para preferir int sobre double y viceversa, como resultado, mostrará un error de compilación.

int add(int a, int b)
double add(int a, int b)

Ejemplo 1-A

Java

// Demo class
class Demo {
    // Programmer defined "mymethod"
    public int myMethod(int num1, int num2)
    {
        System.out.println("First myMethod of class Demo");
        return num1 + num2;
    }
    // Trying to overload "mymethod"
    public int myMethod(int num3, int num4)
    {
        System.out.println("Second myMethod of class Demo");
        return num4 - num3;
    }
}
// Driver class
class GFG {
    // main method
    public static void main(String args[])
    {
        Demo obj1 = new Demo();
        obj1.myMethod(1, 2);
        obj1.myMethod(3, 4);
    }
}

Producción:

prog.java:7: error: method myMethod(int,int) is already defined in class Demo
    public int myMethod(int num3, int num4)
               ^
1 error

Ejemplo 1-B

Java

// Java Program to Illustrate No Roleplay of Returntype
// Even changed in Method Overloading
 
// Main class
class GFG {
 
    int a, b;
 
    // Declared method
    void add(int x, int y)
    {
        // This refers to current instance itself
        this.a = x;
        this.b = y;
 
        // Printing the sum
        System.out.println("SUM:: " + (a + b));
    }
 
    // Method 2
    // To add numbers
    // Overloading the above declared method by
    // changing the return type only
    double add(int x, int y)
    {
        this.a = x;
        this.b = y;
        return a + b;
    }
 
    // Method 3
    // Main method method
    public static void main(String[] args)
    {
        // Creating object of class inside main()
        GFG obj = new GFG();
 
        // Calling add() method by passing
        // custom inputs as parameters
        obj.add(5, 2);
 
        // Trying printing the sum
        System.out.println("Sum:: " + obj.add(3, 4));
    }
}

Producción:

prog.java:8: error: method add(int,int) is already defined in class GFG
  double add(int x,int y){
         ^
prog.java:17: error: 'void' type not allowed here
      System.out.println("Sum:: "+obj.add(3,4));
                                         ^
2 errors

Conclusión:  No podemos llamar a más de un método con el mismo nombre y lista de argumentos. El tipo de retorno del método no desempeñará ningún papel en la sobrecarga del método, en Java no es posible lograr la sobrecarga cambiando solo el tipo de retorno del método.

Publicación traducida automáticamente

Artículo escrito por dattabikash505 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 *