1. Información general
En este tutorial rápido, veremos cómo usar la anotación @Override .
2. @ Anotación de anulación
En una subclase, podemos anular o sobrecargar métodos de instancia. Anular indica que la subclase está reemplazando el comportamiento heredado. La sobrecarga es cuando una subclase agrega un nuevo comportamiento.
A veces, sobrecargamos por accidente cuando en realidad pretendíamos anular. Es fácil cometer este error en Java:
public class Machine { public boolean equals(Machine obj) { return true; } @Test public void whenTwoDifferentMachines_thenReturnTrue() { Object first = new Machine(); Object second = new Machine(); assertTrue(first.equals(second)); } }
Sorprendentemente, la prueba anterior falla. Esto se debe a que este método equals sobrecarga Object # equals , no lo anula.
Podemos usar la anotación @Override en métodos heredados para protegernos de este error.
En este ejemplo, podemos agregar la anotación @Override encima del método equals :
@Override public boolean equals(Machine obj) { return true; }
En este punto, el compilador generará un error, informándonos que no estamos anulando iguales como pensamos.
Entonces, podemos corregir nuestro error:
@Override public boolean equals(Object obj) { return true; }
Debido a lo fácil que es sobrecargar accidentalmente, es una recomendación común usar la anotación @Override en todos los métodos heredados.
3. Conclusión
En esta guía, vimos cómo funciona la anotación @Override en Java.
El código fuente completo de los ejemplos se puede encontrar en GitHub.