Axel Richter: Laden eines Bildes nur sehr langsam

Beitrag lesen

Hallo,

Und diese Notation erlaubt, dass der Rückgabewert nicht absolut identisch sein muss. Er kann nun auch ein vom Rückgabenwert der zu überschreibenden Methode abgeleiteter Objekttyp sein.
Das geht unabhängig davon, ob man diese Annotation angibt oder nicht.

Stimmt. Die Annotation @Override schützt also nur vor versehentlichem Nichtüberschreiben ;-)

Beispiel: Main.java:

  
class MyString1 {  
 String myStr = "Mein String";  
 MyString1(String s) {  
   myStr = s;  
 }  
 public String getMyString() {  
   return myStr;  
 }  
}  
  
class MyString2 extends MyString1 {  
 MyString2(String s) {  
   super(s + " erweitert");  
 }  
}  
  
  
class TestOverride1 {  
 TestOverride1() {  
   return;  
 }  
 public MyString1 test() {  
   return new MyString1("Hallo Welt1");  
 }  
}  
  
class TestOverride2 extends TestOverride1 {  
 TestOverride2() {  
   super();  
 }  
 //ueberschreibt test() in TestOverride1 mit JDK1.5;  
 //JDK1.4 wuerde einen Compiler-Fehler bringen,  
 //weil die Typen nicht uebereinstimmen.  
 public MyString2 test() {  
   return new MyString2("Hallo Welt2");  
 }  
}  
  
class TestOverride3 extends TestOverride2 {  
 TestOverride3() {  
   super();  
 }  
 //ueberschreibt test() in TestOverride2 _nicht_,  
 //weil die Argumente nicht uebereinstimmen  
 //@Override würde einen Compiler-Fehler bringen  
  
 //@Override  
 public MyString1 test(String s) {  
   return new MyString1("Hallo Welt3 " + s);  
 }  
}  
  
  
class Main {  
 public static void main(String[] args) {  
  TestOverride1 to1 = new TestOverride1();  
  TestOverride2 to2 = new TestOverride2();  
  TestOverride3 to3 = new TestOverride3();  
  System.out.println(to1.test());  
  System.out.println(to1.test().getMyString());  
  System.out.println(to2.test());  
  System.out.println(to2.test().getMyString());  
  //Das Folgende ruft die Methode .test() von TestOverride2 auf,  
  //weil kein Ueberschreiben stattgefunden hat.  
  System.out.println(to3.test());  
  System.out.println(to3.test().getMyString());  
 }  
}  

viele Grüße

Axel