À quoi sert @Override en Java? [dupliquer]
Doublon 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 a cette méthode?
4 réponses
Comme vous le décrivez, @Override crée une vérification à 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 de signature stupide 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 compile comme écrit, 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 L'objet. Ceci est une erreur simple, mais il peut échapper à l'Œil de même un développeur chevronné
Cela permet non seulement de vérifier le compilateur-bien que cela suffise à le rendre utile; il documente également l'intention du développeur.
Par exemple, si vous remplacez une méthode mais ne l'utilisez nulle part à partir du type lui-même, quelqu'un qui arrive au code plus tard peut se demander pourquoi il est là. L'annotation explique son but.
Non, tu l'as presque cloué.
@Override
indique au compilateur votre intention : Si vous marquez une méthode @Override
, Vous avez l'intention de remplacer quelque chose de la superclasse (ou de l'interface, en Java 6). Un bon IDE marquera utilement toute méthode qui remplace une méthode sans @Override
, de sorte que la combinaison des deux aidera à vous assurer que vous faites ce que vous essayez de faire.
Nope-sauf qu'il améliore également la lisibilité (c'est-à-dire en plus de l'indicateur utilisé par votre IDE, il est facile de repérer qu'une méthode remplace une déclaration dans la superclasse)