Was genau bedeutet und bewirkt dieses @override?

DennisXX

Bekanntes Mitglied
also wenn das über einer beliebigen Funktion z.B. steht

Java:
@override
public String getName(){

//beliebige Implementierungen

}

Danke schön für die Hilfe !
 
Das besagt, dass die Methode von der Mutterklasse überschrieben wurde.
Wenn es in der Mutterklasse keine solche Methode gibt, kommt es zu einem Compilerfehler.
Dies ist z.B. nützlich um Fehler bei Refactoring früh zu erkennen.
 
Gelöscht.

Das Beispiel war falsch. Die Grundidee hatte aber gepasst.

Auf der Arbeit kann man halt nicht alles direkt ausprobieren....
 
Zuletzt bearbeitet:
Hm, also der Code ist mist 😉
Java:
B b = new A();
oder
Java:
C c = new A();
Wie sollte das gehen?

Außerdem wirkt sich @override da auch nicht wirklich drauf aus (selbst wenn das beispiel funktionieren würde)
 
auch umgekehrt zu sehen ist @override eine annotation um dem compiler mit zu teilen "ja es ist absicht dass die methoder der basis klasse überschrieben wird" überschreibt mal zb toString, dann bekommt man zwar kein fehler aber eine warnmeldung.. und hier für ist die annotaion um die warnmeldun zu quitieren..

Java:
public class Test {

       public void bla() {}

}

class A extends Test {
      
      @override
      public void bla() {}  // ohne @override gibts an dieser stelle ein ewarnmeldung

}
 
Zuletzt bearbeitet:
Danke X5-599! 😉

Überhaupt: Interessante Einstellungen,
die man unter
Window / Preferences / Java / Compiler / Errors/Warnings​
findet.
 
Wenn Du z.B. die Methode "equals" überschreiben möchtest und Dich dabei verschreibst "equal", dann führt das zu keinem Fehler, weil Du halt einfach eine neue Methode "equal" gemacht hast. Zur Laufzeit bemerkst Du dann zwar, dass Dein selbst gemachtes Equal nicht angewendet wird und wirst vermutlich einige Zeit benötigen, bis Du den Schreibfehler bemerkst. Diesen Fall fängt @OVERRIDE ab, indem es Dich informiert "Hey, da gibt es keine Methode die zu überschreiben wäre bzw. so heisst".

Pentalon
 
oder noch relevanter:
vergleichsweise häufig schreiben manche
class X {
equals(X other)
}
welches nicht equals(Object other) überschreibt

gefährlicher Fehler, das funktioniert sogar in eigenen gewissen Tests mit Xen,
aber dann nicht in allgemeinen Algorithmen mit Objekten, etwa HashMap
 
Auch sehr praktisch: Wenn z.B. eine Methode in einer Oberklasse entfernt oder umbenannt wird, merkt man das in den Subklassen dank @Overrides sofort, wenn diese Methode dort überschrieben wird.
 

Zurück
Oben