C'est une bonne pratique et c'est sûr. Supposons que vous avez une classe:
public class MyClass {
...
...
public void doSomething() {
...
...
}
}
Supposons maintenant que vous l'étendez:
public class MyExtendedClass extends MyClass {
...
...
public void doSomthing() {
...
}
}
Ce code compilera, mais vous aurez des problèmes parce que vous avez en fait pas la méthode de substitution! Notez l'orthographe. Maintenant, si vous annoter avec @Override
:
public class MyExtendedClass extends MyClass {
...
...
@Override
public void doSomthing() {
...
}
}
Le compilateur java se plaindra parce que vous essayez de passer outre une méthode qui n'existe pas dans la classe de base. Essentiellement en utilisant @Override
vous permet d'attraper des problèmes comme ceux-ci lors de la compilation.
Ceci est particulièrement utile lorsque vous refactorisez. Si vous modifiez une signature de méthode ou un nom, mais que vous ne possédez pas l'annotation @Override
, certaines méthodes peuvent glisser, ce qui entraîne des bogues difficiles à trouver (bien sûr, avec les IDE modernes, une grande partie de cette douleur est atténuée, mais). Si vous utilisez judicieusement l'annotation @Override
, vous obtiendrez maintenant des erreurs de compilation et vous pourrez donc corriger les signatures de méthode dans vos classes dérivées.
En fait, vous ne pouvez pas faire "public int toString() {...}" car le compilateur va lancer une erreur. L'erreur étant "essayant d'utiliser un type de retour incompatible". Mais si vous faites toString (int i) alors votre réponse est correcte. –
@Amir: Oui, bien sûr mauvais exemple. Je vais le corriger, merci :) – LuckyLuke