Java - wofür wird "@Override" verwendet? [Duplikat]

8

Ich habe noch nie "@Override" vor einer Methode bis jetzt gesetzt. Ich sehe einige Codebeispiele, aber ich verstehe seinen Nutzen nicht. Ich würde eine Erklärung lieben.

Vielen Dank,

JDelage

    
JDelage 15.11.2010, 14:41
quelle

5 Antworten

6

Erstens können Sie eine Klasse nicht mit @Override annotieren. Diese Annotation zeigt an, dass eine Methodendeklaration eine Methodendeklaration in einer Superklasse überschreiben soll.

Sie müssen die überschreibenden Methoden nicht mit Anmerkungen versehen, aber wenn Sie diese Annotation verwenden und Ihre annotierte Methode eine Superklassenmethode nicht überschreibt, erzeugt der Compiler einen Fehler Nachricht.

    
Andreas_D 15.11.2010, 14:47
quelle
8
  

Gibt an, dass eine Methodendeklaration eine Methodendeklaration in einer Oberklasse überschreiben soll. Wenn eine Methode mit diesem Annotationstyp kommentiert wird, aber keine Superklassenmethode überschreibt, müssen Compiler eine Fehlermeldung generieren.

Ссылка

Der Fall, den ich gerne erklären möchte, ist, wenn equals überschrieben wird.

Dies ist ein Fehler, weil equals einen Parameter Object erwartet:

%Vor%     
Jeremy 15.11.2010 14:44
quelle
5

Das beste Beispiel - überschreiben equals() .

Wenn Sie eine Klasse wie folgt schreiben:

%Vor%

Dann haben Sie die Methode equals überladen , anstatt Object.equals wie vorgesehen zu überschreiben.

Wenn Sie die Methode equals mit @Override kommentieren, gibt der Compiler Ihnen einen Fehler, der (richtigerweise) angibt, dass Sie eine Superklassenmethode nicht überschrieben haben.

In Java 6 können Sie dies auch zum Implementieren von Schnittstellenmethoden verwenden - das ist praktisch, wenn Sie Ihrer Klasse nur eine Methode hinzufügen, um bestimmte Schnittstellen zu erfüllen, und daher der Compiler prüfen kann, ob dies erforderlich ist, und Sie auf diese hinweist Schnittstellenänderung.

Wie bei allen Anmerkungen ist es effektiv ein programmatischer Kommentar, aber in diesen Fällen ist es sehr praktisch, dass der Compiler überprüft, ob Ihre Annahmen (noch) korrekt sind.

    
Andrzej Doyle 15.11.2010 14:48
quelle
2

Es ist da, um auszudrücken, dass Sie erwarten, dass die Methode eine Superklassenmethode außer Kraft setzt. Es ist nützlich, wenn Sie einen Fehler machen, indem Sie den Methodennamen eingeben oder ihm die falschen Parameter geben, damit er nicht das überschreibt, was Sie für außer Kraft gesetzt hielten.

    
Nathan Hughes 15.11.2010 14:45
quelle
1

Es ist ein konventioneller Kommentar. Einige Compiler stellen sicher, dass die Funktion, die von @Override gefolgt wird, tatsächlich eine Überschreibung ist ... nur ein Failsafe

    
Mikhail 15.11.2010 14:44
quelle

Tags und Links