Kovarianter Aufruf einer überschriebenen Methode: Kind extends

Werbung
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!
Herunterladen