Duplicata possible:
Quand utilisez-vous l'annotation @Override de Java et pourquoi?
Y a-t-il une raison d'annoter une méthode avec @Override
autre que de demander au compilateur de vérifier que la superclasse possède cette méthode?
Comme vous le décrivez, @Override crée une vérification au moment de la compilation qu'une méthode est remplacée. Ceci est très utile pour vous assurer que vous n'avez pas de problème idiot de signature lorsque vous essayez de remplacer.
Par exemple, j'ai vu l'erreur suivante:
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
Cette classe se compile telle qu'écrite, mais l'ajout de la balise @Override à la méthode equals provoquera une erreur de compilation car elle ne remplace pas la méthode equals sur Object. C'est une simple erreur, mais elle peut même échapper à l'œil d'un développeur expérimenté
Cela ne fait pas que vérifier le compilateur - bien que ce soit suffisant pour le rendre utile; il documente également l'intention du développeur.
Par exemple, si vous remplacez une méthode mais ne l'utilisez pas n'importe où dans le type lui-même, quelqu'un qui viendra au code plus tard peut se demander pourquoi diable elle est là. L'annotation explique son objectif.
Non, vous l'avez pratiquement cloué.
@Override
indique au compilateur votre intention: si vous balisez une méthode @Override
, vous aviez l'intention de remplacer quelque chose de la superclasse (ou de l'interface, dans Java 6). Un bon IDE signalera utilement toute méthode qui remplace une méthode sans pour autant @Override
, donc la combinaison des deux vous permettra de faire ce que vous essayez de faire.
non - sauf qu'il améliore également la lisibilité (c'est-à-dire en plus de tout indicateur que votre IDE utilise, il est facile de repérer qu'une méthode remplace une déclaration dans la superclasse)