# Annotation @Override



## reibi (30. Mrz 2009)

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 ;-)


----------



## thE_29 (30. Mrz 2009)

Wenn du dich beim Methodenname verschreibst, regt sich das Annoation auf, da nichts OVERRIDED wird!

Also nur um Fehler vorzubeugen..


----------



## Ebenius (30. Mrz 2009)

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


----------



## reibi (30. Mrz 2009)

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?


----------



## hdi (30. Mrz 2009)

> 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


----------



## Ebenius (30. Mrz 2009)

reibi Du Faulpelz. 

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

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

Meine Shell: 
	
	
	
	





```
$ javac OverrideTest.java
OverrideTest.java:28: method does not override or implement a method from a supertype
  @Override
  ^
1 error
```
Ebenius


----------



## reibi (30. Mrz 2009)

Ebenius hat gesagt.:


> reibi Du Faulpelz.



Endlich schnallts mal einer ;-)


----------

