web-dev-qa-db-fra.com

La signification de @override dans Android Studio

Je suis complètement nouveau dans Android Studio et je veux connaître l'objectif du @Override instruction dans Android Studio.

47
user359187

@Override est un annotation Java . Il indique au compilateur que la méthode suivante remplace une méthode de son superclasse . Par exemple, supposons que vous implémentez une classe Person.

public class Person {
   public final String firstName;
   public final String lastName;

   //some methods

   @Override public boolean equals(Object other) {
      ...
   }
}

La classe personne a une méthode equals (). La méthode equals est déjà définie dans la superclasse Person Object . Par conséquent, l'implémentation de equals () ci-dessus est une redéfinition de equals () pour les personnes. C'est-à-dire que Personne remplace égal ().

Il est légal de remplacer les méthodes sans l'annoter explicitement. Alors, à quoi sert l'annotation @Override? Et si vous tentiez accidentellement de remplacer equals () de cette façon:

public boolean equals(Person other) {
   ...
}

Le cas ci-dessus a un bug. Vous vouliez remplacer equals () mais vous ne l'avez pas fait. Pourquoi? car le vrai equals () obtient un objet comme paramètre et votre equals () obtient une personne comme paramètre. Le compilateur ne va pas vous parler du bogue car le compilateur ne sait pas que vous vouliez remplacer. Pour autant que le compilateur puisse le dire, vous vouliez en fait surcharger equals (). Mais si vous avez tenté de remplacer égal à égal en utilisant l'annotation @Override:

@Override public boolean equals(Person other) {
   ...
}

Le compilateur sait maintenant que vous avez une erreur. Vous vouliez passer outre mais vous ne l'avez pas fait. Ainsi, la raison d'utiliser l'annotation @Override est de déclarer explicitement la substitution de méthode.

85
snakile

C'est une annotation Java (non spécifique à Android). Vous l'utilisez pour signifier que cette méthode remplace une méthode.

La raison de l'utiliser est de détecter les erreurs lorsque vous créez une méthode que vous avez l'intention de remplacer une méthode, mais grâce à une erreur, il le fait pas, par exemple faute de frappe dans le nom de la méthode, une erreur dans la signature de la méthode, etc. Par exemple, parfois les développeurs de ceci:

class Foo { 
    public boolean equals(Foo other) {
       ...

L'auteur a voulu que cela remplace la méthode equals de la superclasse, mais ce n'est pas le cas (le type de paramètre doit être Object). Le programme se compilera correctement, mais n'utilisera pas Foo.equals comme l'auteur le souhaitait.

class Foo {
    @Override
    public boolean equals(Foo other) {
       ...

La compilation donnera maintenant une erreur car la méthode ne remplace pas une autre méthode. Cela met en évidence le problème tôt et, espérons-le, vous fait gagner un peu de temps de débogage en recherchant le problème.

20
Bert F

C'est une annotation Java qui indique au compilateur que la méthode est destinée à remplacer une méthode de la superclasse. Ce n'est pas strictement nécessaire, mais aide à détecter les erreurs lors de la compilation.

7
trojanfoe

C'est un annotation en Java. Il marque que la méthode est destinée à remplacer une méthode dans une superclasse.

2
Jonas

C'est une annotation spéciale, réservée au compilateur, Java annotation qui indique que vous remplacez une méthode de superclasse.

0
Brandon