Anotación Java @Override

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.