web-dev-qa-db-fra.com

Utilisation d'Android @Override

(Débutant en Java, ancien gars C #.)

J'ai remarqué l'utilisation de @Override dans l'exemple de code Android. Je pensais que toutes les méthodes Java étaient par défaut "virtuelles"?

Que fait alors @Override?

Exemple: 

private class HelloWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
65

C'est une annotation que vous pouvez utiliser pour indiquer au compilateur et à votre IDE que vous souhaitez que la méthode comportant cette annotation soit un remplacement d'une méthode de la super classe. Ils ont un avertissement/des erreurs au cas où vous feriez des erreurs, par exemple si vous avez l'intention de surcharger une méthode mais de l'orthographier, si l'annotation est présente, IDE ou le compilateur vous dira qu'il s'agit de pas in En remplaçant la méthode Super Class, vous pouvez déterminer pourquoi et corriger l’orthographe.

Ceci est d'autant plus important pour les applications et activités Android, par exemple, où tous les appels sont basés sur le cycle de vie de l'activité. Si vous ne remplacez pas correctement les méthodes du cycle de vie, ils ne seront jamais appelés par le framework. Tout va bien se compiler, mais votre application ne fonctionnera pas comme vous le souhaitez. Si vous ajoutez l'annotation, vous obtiendrez une erreur.

97
JRL

Ce code pour le débutant qui veut vraiment comprendre le processus @Override, cela vous aidera! (Rappelez le concept d'héritage de Java.)

Par exemple, la classe Fish peut avoir deux sous-classes: FreshwaterFish et SaltwaterFish

Ces sous-classes auraient toutes les fonctionnalités de la classe Fish, mais pourraient personnaliser davantage les objets via de nouveaux attributs et comportements ou des comportements modifiés à partir de la classe parente Fish. Par exemple, la classe FreshwaterFish peut inclure des informations sur le type d’environnement d’eau douce (par exemple, rivière, lac, étang ou flaque d’eau).

De même, la classe SaltwaterFish peut personnaliser la méthode makeBabyFish() de sorte que le poisson mange son compagnon après la reproduction (comme défini dans la super classe) en utilisant le mécanisme de substitution, comme suit:

public class SaltwaterFish extends Fish  
{  
    @Override  
    public void makeBabyFish(Fish fishSpouse, int numBabies) {  
        // call parent method  
        super.makeBabyFish(fishSpouse, numBabies);  
        // eat mate  
        eat(fishSpouse);  
    }  
}
49
samir vora

Override-Annotation est juste un indice pour le compilateur que vous voulez écraser une certaine fonction. Le compilateur vérifiera ensuite les classes parentes et les interfaces si la fonction existe là-bas. Sinon, vous obtiendrez une erreur de compilation.

C'est fondamentalement juste un mécanisme de sécurité.

Pour référence, voir cet article (la substitution est expliquée quelque part au milieu)

22
lostiniceland

La substitution est principalement utilisée dans le cas de la définition d'une méthode. La substitution est similaire à sa signification.

Je vais essayer d’expliquer de façon très boiteuse. Supposons que vous ayez déjà défini la méthode Oncreate () et que vous ayez les propriétés associées. Et encore une fois lorsque vous appelez la méthode Oncreate () dans votre code pour un certain objet, le code que vous avez écrit maintenant ... remplacera la propriété formellement définie ou la propriété héritée de Oncreate () pour votre application.

0
vivek