Android @Override usage

(Newbie à Java, ancien gars C #).

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

  • Qu'est-ce qu'Entité autorisée? Impossible de trouver gcm_defaultSenderId dans sa propre application
  • Perspectives d'écran Android Final vs Private
  • Classe MediaPlayer personnalisée dans Android
  • Comment utiliser correctement Dagger2 avec les nouveaux composants d'architecture Android
  • Comment puis-je trouver où une méthode ou une variable est utilisée dans Android Studio (raccourci)
  • Gérer multitouch dans libgdx
  • Qu'est-ce que @Override fait alors?

    Exemple:

     private class HelloWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 

    4 Solutions collect form web for “Android @Override usage”

    C'est une annotation que vous pouvez utiliser pour indiquer au compilateur et à votre IDE que vous avez l'intention de la méthode qui a cette annotation être une substitution d'une méthode de super classe. Ils ont des avertissements / des erreurs au cas où vous commettez des erreurs, par exemple si vous avez l'intention de remplacer une méthode, mais faites une erreur, si l'annotation est là, l'IDE ou le compilateur vous indiquera qu'il n'est pas en fait surpassant la méthode super classe et donc Vous pouvez déterminer pourquoi et corriger l'erreur orale.

    Ceci est d'autant plus important pour les applications et les activités d'Android, par exemple, où tous les appels seront basés sur le cycle de vie de l'activité – et si vous ne remplacez pas correctement les méthodes de 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.

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

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

    Ces sous-classes disposeraient de toutes les caractéristiques de la classe Fish , mais pourraient également personnaliser les objets à travers de nouveaux attributs et comportements ou comportements modifiés de la classe Fish . Par exemple, la classe FreshwaterFish pourrait inclure des informations sur le type d'environnement d'eau douce vivant (p. Ex. Rivière, lac, étang ou flaque).

    De même, la classe SaltwaterFish pourrait personnaliser la méthode makeBabyFish() sorte que le poisson mange son compagnon après l'élevage (tel que défini dans la super classe) en utilisant le mécanisme de neutralisation, comme ceci:

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

    The Override-Annotation est juste un indice pour le compilateur que vous souhaitez remplacer une certaine fonction. Le compilateur vérifiera alors les classes parentales et les interfaces si la fonction existe. Sinon, vous obtiendrez une erreur de compilation.

    Il s'agit essentiellement d'un mécanisme de sécurité.

    Pour référence, voir cet article (le dépassement est expliqué quelque part au milieu)

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

    J'essaierai d'expliquer de manière très dérangante. Supposez si vous avez la méthode Oncreate () déjà définie et les propriétés associées. Et Encore une fois lorsque vous appelez la méthode Oncreate () dans votre code pour certains objets, le code que vous avez déjà écrit … remplacera la propriété formellement définie ou la propriété héritée d'Oncreate () pour votre application.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.