Annotation @Override

Status
Nicht offen für weitere Antworten.

reibi

Top Contributor
Hallo zusammen

Hab mich grad gefragt weshalb es eine Annotation namens "@Override" gibt, die für implementierte Methoden gedacht ist, welche ein Interface vorgibt.

Also es geht ja auch ohne!
Mein Eclipse schreibt das automatisch vor die Methoden, wenn ich die Methodern des Interfaces durch drücken von "Quickfix" implementiere.

Für was ist das gut?

Danke und Gruss ;-)
 
Wenn du dich beim Methodenname verschreibst, regt sich das Annoation auf, da nichts OVERRIDED wird!

Also nur um Fehler vorzubeugen..
 
Bzw. wenn Du später eine Methode der Super-Klasse (oder des Interface's) umbenennst, dann warnt Dich der Compiler, dass die implementierende/überschreibende Methode da etwas erwartet was nicht mehr den Tatsachen entspricht.

Diese Annotation hat natürlich auch eine API-Doc: Override

Ebenius
 
Mein Eclipse regt sich auch so auf, wenn ich das vergessen sollte.
Natürlich kann man nicht davon ausgehen, dass man Eclipse, Netbeans oder ne andere IDE benutzt, die sich dabei aufregen.

Nehmen wir an ich schreibe die Klasse in notepad oder vi; was passiert denn dann? Dann regt er sich beim compilieren auf, dass diese nicht implementierte Methode noch fehlt.

Ob das durch den Annotationsmechanismus erfolgt oder durch einen Compilierungsfehler, welcher feststellt, dass es eine unimplementierte Methode gibt ist ja eigentlich egal... oder?
 
Ob das durch den Annotationsmechanismus erfolgt oder durch einen Compilierungsfehler, welcher feststellt, dass es eine unimplementierte Methode gibt ist ja eigentlich egal... oder?

Wenn die Methode kein @Override hat wird es sicherlich nicht zu einem Compile-Fehler
kommen. Wieso denn, du hast lediglich eine neue Methode geschrieben.
Andersrum genauso: Solange die Methode nicht abstrakt ist, wird es auch keinen Compile-Fehler
geben wenn du sie in der Subklasse nicht überschreibst.

Von daher macht diese Annotation Sinn, vorallem wenn man mit nem Notepad arbeitet.
Denn nur dann kriegste nen Compile-Error

edit: Sorry ich seh grad ich hab deinen Beitrag falsch verstanden. Du sagst ja genau das gleiche 😉
 
reibi Du Faulpelz. 😀

Meine Klasse: [HIGHLIGHT="Java"]public class OverrideTest {

@Override
public void toInteger() {
System.out.println("Nope");
}
}[/HIGHLIGHT]

Meine Shell:
Code:
$ javac OverrideTest.java
OverrideTest.java:28: method does not override or implement a method from a supertype
  @Override
  ^
1 error
Ebenius
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben