À 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?

53
demandé sur Ichiro 2009-02-18 17:52:42

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é

48
répondu Rob Di Marco 2009-02-18 14:57:08

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.

23
répondu Jon Skeet 2009-02-18 14:55:24

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.

11
répondu Michael Myers 2009-02-18 14:58:00

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)

2
répondu Rahel Lüthy 2009-02-18 14:56:06