@Override en Java

Rupam Yadav 12 octubre 2023
  1. Diferencia entre anulación y sobrecarga en Java
  2. La anotación @Override en Java
@Override en Java

En esta guía, profundizaremos en el tema de anulación y la anotación @override en Java. La invalidación es el concepto en el que una clase secundaria tiene el mismo método que en su clase principal. Este concepto es un ejemplo de polimorfismo en tiempo de ejecución.

Diferencia entre anulación y sobrecarga en Java

La anulación se confunde a menudo con otro término similar llamado sobrecarga. Antes de continuar, veamos las diferencias significativas entre ellos en la siguiente tabla.

Anulación de método Sobrecarga de métodos
Los métodos deben tener el mismo nombre y firma Los métodos deben tener el mismo nombre pero una firma diferente
Es un ejemplo de polimorfismo en tiempo de ejecución. Es un ejemplo de polimorfismo en tiempo de compilación.
El tipo de retorno de todos los métodos debe ser el mismo El tipo de devolución puede ser el mismo o no
La anulación ocurre entre dos o más clases La sobrecarga ocurre en la misma clase
Los parámetros deben ser los mismos Los parámetros deben ser diferentes

La anotación @Override en Java

La anotación @Override le dice al compilador de Java que queremos anular un método de la superclase. Aunque no es necesario utilizar @Override siempre que queramos implementarlo en un proceso, recomendamos utilizarlo porque podemos cometer errores al crear los métodos. Por ejemplo, podríamos proporcionar diferentes parámetros en la clase secundaria, lo que hace que se sobrecargue en lugar de anularla.

Para superar el error, usamos @Override encima del nombre del método en las clases secundarias que le dice al compilador que queremos anular el método. Si cometemos algún error, el compilador arrojará un error.

En el siguiente ejemplo, tenemos cuatro clases. La clase OverrideJava es donde está el método main() y donde los métodos de otras clases serán llamados usando sus objetos. Luego tenemos otras tres clases en las que la FirstClass tiene un método llamado method1() con un mensaje de impresión dentro. Finalmente, la clase SecondClass extiende la FirstClass que usa el concepto de herencia. Aquí, usamos el mismo nombre de método y firma method1() que su clase padre como FirstClass.

Observe que en la clase SecondClass, usamos la anotación @Override. A continuación, ampliamos SecondClass en la clase ThirdClass y usamos el método method1() con la anotación. Para comprobar qué método se llama, creamos un objeto de ThirdClass, que es la clase hija, y llamamos a method1(). En la salida, observamos que el método dentro de ThirdClass se llama porque el hijo cambió la implementación interna después del padre.

public class OverrideJava {
  public static void main(String[] args) {
    ThirdClass thirdClass = new ThirdClass();
    thirdClass.method1();
  }
}

class ThirdClass extends SecondClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Third Class");
  }
}

class SecondClass extends FirstClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Second Class");
  }
}

class FirstClass {
  void method1() {
    System.out.println("This is method1");
  }
}

Producción :

Overriding method1 in Third Class

Si queremos llamar al method1() de la clase principal en lugar de la clase secundaria, podemos usar super.method1() que llama al method1() de su superclase. La salida muestra que dentro de ThirdClass primero, se llama a su clase padre que es el método de SecondClass, luego se llama a su propia implementación.

public class OverrideJava {
  public static void main(String[] args) {
    ThirdClass thirdClass = new ThirdClass();
    thirdClass.method1();
  }
}

class ThirdClass extends SecondClass {
  @Override
  void method1() {
    super.method1();
    System.out.println("Overriding method1 in Third Class");
  }
}

class SecondClass extends FirstClass {
  @Override
  void method1() {
    System.out.println("Overriding method1 in Second Class");
  }
}

class FirstClass {
  void method1() {
    System.out.println("This is method1");
  }
}

Producción :

Overriding method1 in Second Class
Overriding method1 in Third Class
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn