Kovarianter Aufruf einer überschriebenen Methode: Kind extends Eltern Methode in Eltern Rückgabetyp Object Methode in Kind: Rückgabetyp String Eltern e=new Kind(); e.methode(); Welche Methode wird aufgerufen? Was ist der Rückgabetyp? Statischer Initialisierblock: public class StaticInitTest{ static int x=0; static {x=10; int y=20; } public static void main(String[] args){ StaticInitTest st=new StaticInitTest(); System.out.println(st.x); //System.out.println(st.y); } } Resultat? for (i=0;i<100;i++){ if(i%5==0) break; } System.out.println(i) Output? TreeMap tm=new TreeMap(); tm.put("a,1");tm.put("b,2");.... Was bewirkt TreeMap tm1=tm.headMap("d",true); import java.util.*; public class HeadSetTest{ public static void main(String... args){ TreeSet<Integer> ts=new TreeSet<Integer>(); ts.add(1);ts.add(2);ts.add(3); NavigableSet<Integer> ts1=ts.headSet(3,true); ts.add(6); ts1.add(4); //legal? } } Es wird die Methode rechts vom Gleichheitszeichen aufgerufen, also die Methode im Kindobjekt. Aber vorsicht: Der Rückgabetyp ist vom Typ der Elternklasse, also Object! Kompiliert und läuft. Output x=10. Variable y existiert nur lokal im Initialisierblock, deshalb kann sie nicht in main() ausgegeben werden. Output = 0; 0%5 ist 0! Gibt eine Kopie von tm bis und mit zum Schlüssel d (daher das true als 2. Parameter). Zu tm1 dürfen nur bis zum Buchstaben d neue Elemente hinzugefügt werden. Nein, headSet(3,true) liefert nur ein Set bis Element 3 . Hinzufügen eines weiteren Elements zu ts1 ergibt Laufzeitfehler: key out of range: Zu ts1 dürfen nur Elemente bis 3 hinzugefügt werden. Mit headSet(5,true) würde das Hinzufügen zu ts1 ohne Problem klappen!