Brauchen wir wirklich @Override und so weiter, wenn wir Java programmieren? [duplicate]

Lesezeit: 1 Minute

Benutzeravatar von zfm
zfm

Mögliches Duplikat:

Wann verwenden Sie die Annotation @Override von Java und warum?

Ich frage mich, was die Funktionalität des Hinzufügens @Override vor dem Code, den wir überschreiben möchten, steht. Ich habe mit und ohne es getan, und es schien, dass alles gut lief (zumindest für mich).

  • Zum einen erhalten Sie eine viel schönere Überprüfung der Kompilierzeit. Duplizieren: stackoverflow.com/questions/94361/…

    – Wo

    27. Januar 2011 um 23:00 Uhr


  • Als ich von Delphi zu Java wechselte, war ich so erleichtert, dass ich “virtuell” nicht mehr brauchte … @Override ist ein Schritt zurück. Heutzutage haben die meisten IDEs Auto-Override, also wird es selten von Hand geschrieben, trägt aber zum flauschigen Java-Stil bei 🙂

    – bestes

    28. Januar 2011 um 1:00 Uhr


  • @bestsss – niemand zwingt Sie, @Override zu verwenden. Aber wagen Sie es nicht, es aus jedem Code zu entfernen, den >>ich<< schreibe.

    – Stefan C

    28. Januar 2011 um 1:26 Uhr

  • @Stephen C: ugg, ich weiß, dass ich alt werde und mein Gedächtnis verblasst, aber ich erinnere mich nicht daran.

    – bestes

    28. Januar 2011 um 1:32 Uhr

Es ist nicht notwendig, aber sehr zu empfehlen. Es hält Sie davon ab, sich selbst in den Fuß zu schießen. Es hilft, den Fall zu verhindern, dass Sie eine Funktion schreiben, von der Sie glauben, dass sie eine andere überschreibt, aber Sie etwas falsch geschrieben haben und ein völlig unerwartetes Verhalten erhalten.

Benutzeravatar von Bert F
Bert F

was die Funktionalität des Hinzufügens von @Override

Es lässt den Compiler für Sie doppelt prüfen, wenn Sie sagen (durch Anmerkungen), dass eine angegebene Methode eine Oberklassenmethode überschreiben soll (oder eine Schnittstellenmethode in Java 6 oder höher implementieren soll). Wenn die Methode tatsächlich keine Oberklassenmethode überschreibt (oder eine Schnittstellenmethode implementiert), kennzeichnet der Compiler dies als Fehler. Dies weist oft darauf hin, dass Sie einen Tippfehler im Methodennamen oder in der Methodensignatur gemacht haben.

Brauchen wir wirklich @Override

Brauchen? Absolut nicht, aber es ist so ein billig Weg zu

  • vermittelt dem menschlichen Leser ausdrücklich, dass dies eine vorrangige Methode ist, und
  • fängt einen Fehler zur Kompilierzeit das könnte mindestens ein paar Gehirnzyklen dauern, um es zur Laufzeit zu erfassen sobald Sie sogar wissen, um danach zu suchen

… und noch billiger, wenn Ihre IDE Ihnen hilft, es einzubinden …

Es wird empfohlen, da es hilft, die Konsistenz zu verwalten. Stellen Sie sich vor, jemand ändert den Namen der Superklassenmethode (und nur dort, ohne Namensänderungen in davon abhängigen Klassen durchzuführen, was ziemlich hypothetisch ist 🙂 ), dann sind Sie der Erste, der es aufgrund von Kompilierungsfehlern erfährt.

Benutzeravatar von jhurtado
jhurtado

Der einzige Unterschied wäre, dass sich der Compiler beschwert, wenn Sie eine Methode mit @Override annotieren und nichts überschreiben.

Überprüfen Sie Wann verwenden Sie Java-Override-Anmerkungen und warum?

Es hat mir ein paar Mal geholfen, Rechtschreibfehler / Groß- und Kleinschreibungsunterschiede in Methodennamen zu vermeiden. Ohne sie ist es einer dieser lästigen Fehler, deren Aufspüren ewig dauern kann.

Es fügt keinen funktionellen Unterschied hinzu, aber dem Compiler mitzuteilen, dass Sie glauben, eine Methode zu überschreiben, damit er sich beschweren kann, wenn Sie es nicht tun, ist sehr nützlich, wenn Sie irgendwo einen Fehler gemacht haben!

Benutzeravatar von palAlaa
palAlaa

Es wird dringend empfohlen, es zu verwenden, da es die Unterdrückbarkeit Ihres Codes erhöht und anderen hilft, Ihren Code ebenfalls zu warten.

Benutzeravatar von Manidip Sengupta
Manidip Sengupta

Persönlich denke ich nicht, dass es nützlich ist, außer für IDEs, die die Fehlerprüfung während der Kompilierung durchführen, aber das ist meine Meinung. Grund: Angenommen, Sie haben

Class A { 
    methodName() { System.out.println ("A"); }
}

class B extends A { 
    methodName() { System.out.println ("B"); }
}

Zur Laufzeit werden Sie wahrscheinlich B.methodName() aufrufen – es spielt für B keine Rolle, ob B.methodName() den gleichen Namen der Klasse A() überschreibt. Für Klasse B sollte es keine Rolle spielen, ob die Oberklasse (A) methodName() implementiert. Was ich meine, ist, dass Vererbung eine Einbahnstraße ist – Sie können etwas nicht mit einem @override vererben – alles, was der Compiler prüfen kann, ist, ob es eine Methode mit derselben Signatur in der Oberklasse gibt – die sowieso nicht verwendet wird .

Für die anderen Antworten: Wenn jemand A.java bearbeitet, um methodName() zu löschen oder umzubenennen oder seine Signatur zu ändern, können Sie B.methodName() immer noch problemlos aufrufen, aber nur, wenn Sie dieses @override nicht verwenden. Ich denke, das ist auch der Grund dafür nicht ein Teil der Java-Sprache.

  • @Überschreiben ist Teil der Java-Sprache – siehe java.sun.com/docs/books/jls/third_edition/html/…

    – Stefan C

    28. Januar 2011 um 1:20 Uhr

  • Vielleicht habe ich es nicht richtig ausgedrückt – ich nehme keine Anmerkungen im Allgemeinen – nur die Nützlichkeit von @override.

    – Manidip Sengupta

    28. Januar 2011 um 1:36 Uhr


  • Wenn Sie sagen wollen, dass Sie es nicht für nützlich halten, sagen Sie einfach das. Was du eigentlich gesagt ist offensichtlich falsch.

    – Stefan C

    28. Januar 2011 um 4:04 Uhr

  • Okay, also ist ein Teil der Java-Sprache, ich habe mich geirrt. Und übrigens denke ich immer noch, dass es aus den oben genannten Gründen nicht nützlich ist.

    – Manidip Sengupta

    28. Januar 2011 um 4:20 Uhr

1441240cookie-checkBrauchen wir wirklich @Override und so weiter, wenn wir Java programmieren? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy