Duda con Sobrescritura de Metodos

hola hace poco estube repasando estas cuestiones y me entro una duda yo siempre para sobrescribir un metodo antepongo la anotacion @Override hace poco vi un codigo que no las tenia pero igual los sobrescribia y hice mi ejemplo para probar esa situacion.

codigo con @Override.

 

con salida metodo del canguro asi lo he hecho siempre ahora viene mi duda este codigo tambien funciona hace lo mismo.
 

y la salida es la misma ,ahora mi pregunta viene cual es la forma correcta ,sera porque que en algunas versiones de JDK no funcionara alguna de las dos formas????

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

anotación

  no es una anotación obligatoria. Se recomienda su uso porque permite al compilador validar que el método anotado realmente sobreescriba el de una interfaz o superclase. La ventaja de usarlo es que si por ejemplo en la superclase cambia la firma o nombre del método, la subclase dará un error, mientras que si no usas la interfaz, todo compila bien y luego puedes tener problemas. Ejemplo:

 

Ese código compila, pero la bronca viene cuando renombras  ; si le pones   por ejemplo, todo sigue compilando, pero ahora   es un método que no sobreescribe nada. Si decoras   con   entonces al cambiar el nombre de  , el compilador arroja un error en   porque no está sobreescribiendo ningún método.

Imagen de radamanthys360

Gracias por la respuesta me

Gracias por la respuesta me has sacado de la duda,entonces es recomendable usar @Override Gracias