¿Debo agregar una anotación @Override al implementar métodos abstractos en Java?

2 minutos de lectura

avatar de usuario
Eyvind

Al anular un método no virtual en Java, el uso de la @Override Se recomienda la anotación, pero ¿qué sucede si implemento un método abstracto? debo usar @Override entonces tambien?

Tiendo a preferir el uso de @Override en este caso, para que el método se marque en las subclases si la superclase cambia (ya sea eliminando el método por completo o cambiando su firma, etc.).

La única diferencia real es que sin la anotación, si el método en la superclase/interfaz se cambia o elimina, la implementación en cuestión simplemente se convierte en un método “normal” de esa clase. Por lo tanto, debe agregar la anotación si está implementando el método únicamente para cumplir con el contrato; y probablemente no debería agregarlo si el método tiene sentido en su clase, independientemente de las interfaces implementadas o los métodos abstractos heredados.

  • También necesita Java 6 para aprovechar esta anotación. Java 5 no le permite colocarlo en implementaciones de interfaz.

    – akarnokd

    17 de junio de 2009 a las 9:03

Sí, nuevamente, le dice al compilador: “Realmente quiero anular un método aquí. Si hay no es un método correspondiente para anular, cometí un error y quiero que me lo informen”.

Personalmente, creo que es una lástima que esto sea solo una anotación en lugar de parte del lenguaje (como lo es en C#), pero ese es el beneficio de la retrospectiva, por supuesto.

  • Eso salvó mi piel un par de veces.

    – Ravi Wallau

    17 de junio de 2009 a las 15:37

avatar de usuario
mR_fr0g

Sí. Es una práctica recomendada por Joshua Bloch en Java Efectivo.

De hecho, Joshua Bloch, en el párrafo final de la página 178 en Java efectivo (2ª ed.)dice que no es esencial que los métodos de clases concretas que anulan los métodos abstractos usen el Override anotación porque el compilador daría un error de todos modos. Sin embargo, “no es perjudicial hacerlo”.

Recomiendo elegir una estrategia y apegarse a ella constantemente.

¿Ha sido útil esta solución?