Java: Soll ich eine @Override Anmerkung hinzufügen, wenn abstrakte Methoden implementieren?

StackOverflow https://stackoverflow.com/questions/1005898

  •  05-07-2019
  •  | 
  •  

Frage

Wenn Sie eine nicht-virtuelle Methode in Java überschreiben, Verwendung der @Override Anmerkung wird empfohlen, aber was ist, wenn ich eine abstrakte Methode implementieren? Soll ich @Override dann auch benutzen?

War es hilfreich?

Lösung

Ich neige dazu, die Verwendung von @Override in diesem Fall bevorzugen, so dass das Verfahren in den Unterklassen gekennzeichnet wird, wenn die übergeordnete Klasse ändert (entweder das Verfahren gänzlich zu entfernen oder ihre Signatur zu ändern, usw.).

Der einzige wirkliche Unterschied ist, dass ohne die Anmerkung, wenn die Methode in der übergeordneten Klasse / Schnittstelle geändert oder entfernt wird, einfach die Umsetzung in Frage eine „normale“ Methode dieser Klasse wird. Daher sollten Sie die Anmerkung hinzufügen, wenn Sie die Methode sind die Umsetzung ausschließlich zur Erfüllung des Vertrages; und Sie wahrscheinlich sollte es nicht hinzufügen, wenn die Methode Sinn in Ihrer Klasse macht unabhängig von irgendwelchen implementierten Schnittstellen oder geerbten abstrakten Methoden.

Andere Tipps

Ja -. Wieder, es sagt der Compiler: „Ich möchte wirklich eine Methode hier überschrieben werden, wenn es nicht ein entsprechendes Verfahren außer Kraft zu setzen, ich habe einen Fehler gemacht und wollen davon erzählt wird! "

Ich persönlich denke, es ist schade, dass dies nur eine Anmerkung nicht als Teil der Sprache (wie es in C #), aber das ist im Nachhinein, natürlich.

Ja. Es ist die Praxis von Joshua Bloch in Effective Java empfohlen.

Eigentlich Joshua Bloch, im letzten Absatz der Seite 178 in Effective Java (2. Aufl.) , sagt, dass es für Methoden der konkreten Klassen nicht wesentlich ist, die abstrakten Methoden überschreiben die Override Anmerkung zu verwenden weil der Compiler würde ohnehin einen Fehler geben. Doch „es nicht schädlich ist zu tun“.

Ich würde empfehlen, eine Strategie wählen und mit ihm klebt konsequent.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top