@Override annotatie in Android

Ik ben nieuw in het programmeren van Java en Android. Het probleem dat ik ondervind, is dat ik na het surfen van verschillende boeken, forums en websites, geen duidelijk begrip heb van wat de @override-annotatie doet. Ik begrijp dat dit betekent dat een methode te veel wordt gereden. maar waarom is het nodig in Android. Ik zie het zelden in de broncode voor Java, maar de hele tijd in Android.

10

8 antwoord

Mogelijk zie je het zelden in de oude Java-broncode, omdat het een vrij recente innovatie is - terwijl Android-code per definitie vrij recent is.

Het is echt een vangnet - het vertelt de compiler dat je probeert iets te negeren - dus faal als de methode niet negeer, bijv. vanwege een typfout in de naam. Het is net of negeren een sleutelwoord is dat deel uitmaakt van de methodeverklaring in C #. Het helpt je om expliciet te zijn over wat je doet, wat helpt om fouten te voorkomen en maakt je code ook duidelijker voor toekomstige lezers.

21
toegevoegd
Dank je. Ik heb hier bij elk antwoord iets weggenomen. Ik en nieuw te stapelen, dus wees alsjeblieft niet beledigd als ik niet elk antwoord bedank. Ik ging direct naar de Java-info en zocht abstracte klassen en polymorfisme op. Om mijn begrip te herhalen, wanneer ik de onCreate() aanroep, heeft het gewoon de basiscomponenten om een ​​basisactiviteit te creëren die door het OS wordt gebruikt. wanneer @overide in het spel komt, kun je in principe meer dan de onCreate() gebruiken om het te laten doen wat je bedoeling is in je programma. Ik denk dat ik dat moeilijker heb gemaakt dan het moest zijn, maar ik heb het in elk geval gehaald!
toegevoegd de auteur JBlaza, de bron

Als u de basis van @Override-annotatie begrijpt, is het gewoon metadata-informatie die twee doelen heeft:

  • Beschrijf dat de methode wordt overschreven omdat deze is gedefinieerd in een interface of een uitgebreide klasse

  • Helpt u bij het correct identificeren welke methode lokaal is gedeclareerd en die doorslaggevend zijn, aangezien u zich in Android waarschijnlijk zult uitbreiden van Fragment, Activity, Services, BroadcastReceiver, enz. Het is een goede gewoonte die uw code schoner zal maken.

Wat het probleem betreft dat je het niet ziet in Java-stijl, het is niet alleen omdat het een vrij nieuwe functie is (niet zo nieuw sinds 2005), maar omdat je de methode niet zo vaak negeert in Java, althans niet in Swing of SWT, meestal zult u ze vinden in TableModel of wanneer het Servlet is in de uitgebreide HttpServlet-klassen

7
toegevoegd

because you override a lot of methods , example ;when you create your Activity ( which extends Activity ) you need to override the method onCreate( Bundle savedInstanceState) to initialize your Activity , and so on , every time you override a method from a mother Class , eclipse add the annotation @override

2
toegevoegd

@Override means that you want to re-define function from superclass in child class. Read more about abstract methods, classes, polymorphism.

2
toegevoegd

Ik weet bijna niets over Android-programmeren, maar de @ Negeren-annotatie wordt gebruikt om te laten zien dat de methode een supeklasse-methode opheft (of implementeert een interfacemethode in Java 1.6). Naast de puur documentatieve betekenis van de annotatie, waarschuwt tenminste Eclipse je ook (of markeert het een fout, afhankelijk van je instellingen) als de methode niet echt een superklassemethode opheft, als je denkt dat het dat doet (waardoor een frustrerende bug wordt voorkomen) -jacht). Misschien vereist de Android-compiler gewoon standaard alle overheersende methoden om geannoteerd te worden met @Override.

1
toegevoegd

@override means you are borrowing methods from available class and are not defined by the programmer.

1
toegevoegd
Kijk naar het geaccepteerde antwoord
toegevoegd de auteur raam86, de bron

Het is niet nodig voor zowel Java als Android. Je ziet het vaak in Android-programma's omdat eclips het automatisch toevoegt wanneer je een nieuwe activiteit, methode, etc. maakt. Als u de annotatie @Override verwijdert, wordt er niets weergegeven.

0
toegevoegd

@overide is zoiets als een virtuele methode in c ++, Oncreate-methode in Android lijkt meer op de virtuele bool Oninit() in wxWidget, deze methode wordt door android (Oncreate) gebruikt om je GUI te bouwen, omdat GUI anders is dan degene die de code in Oncreate verander ook dit is de reden waarom we het moeten overslaan. We @overide elke methode die wordt gebruikt door de bibliotheek en die we willen aanpassen. Oncreat() zoals Oninit() zijn die methode die we ook willen aanpassen.

0
toegevoegd