Obertypen in Java
Finden von Obertypen in der Dokumentation
In der Dokumentation findet man Oberschnittstellen und weitere Obertypen über der waagerechten Linien am Anfang der Dokumentation eines Referenztyps.
Man unterscheidet zwischen erweiterten Obertypen und implementierten Obertypen.
Erweiterte Obertypen
Dabei sind die erweiterten Obertypen als eine treppenartige Auflistung angegeben, die daran erkennbar ist, daß sie mit »java.lang.Object« beginnt und daß jede Zeile immer weiter nach rechts eingerückt ist als die vorige.
Implementierte Obertypen
Eventuelle implementierte Obertypen findet man manchmal separat unter der Überschrift “All Implemented Interfaces ”.
Alle Obertypen
Diese erweiterten Obertypen und implementierte Obertypen bilden zusammen die Obertypen des dokumentierten Typs.
“Known ”
Falls man über der Linie auch noch Abschnitte findet, deren Titel das Wort “Known ” enthalten, so handelt es sich bei diesen Abschnitten nicht um Obertypen. Man sollte diese Abschnitte ignorieren, wenn man nach Obertypen sucht. Genauso sind auch eventuelle Angaben zu Typparametern nicht als Angabe von Obertypen zu verstehen.
Eigenschaften von Obertypen
Jeder Typ ist Obertyp seiner selbst. (Er ist dementsprechend auch immer in der eingerückten Liste der Obertypen zu finden.)
Echte Obertypen
Ein Obertyp, der nicht der Typ selbst ist, ist ein echter Obertyp.
Höhe von Typen
Wir stellen uns auch vor, daß ein echter Obertyp eines Typs, weiter „oben“ ist als jener Typ. So ist es gemeint, wenn später etwa nach einem Typ gesucht wird, „der möglichst weit oben ist“.
Ein echter Obertyp P eines eines echten Obertyps O ist dementsprechen weiter oben als der echte Obertyp O.
Klassen und Schnittstellen
Was ist überhaupt der Unterschied zwischen Klassen und Schnittstellen? Dies wird erst etwas später in diesem Kurs deutlich werden! Bis dahin können wir zur Erklärung nur sagen, daß manche Referenztypen als „Klassen“ und manche als „Schnittstellen“ bezeichnet werden und wir zunächst noch nicht wissen müssen, welcher Unterschied zwischen ihnen besteht. Deswegen bezeichnen wir sie bis auf weiteres auch oft beide einfach als „Typen“ oder „Referenztypen“.
Konstruierte Typen
Wenn O ein Obertyp des Typs U ist, dann folgt daraus nicht, daß der konstruierte Typ »G<O>« ein Obertyp von »G<U>« ist! Etwaige Obertypen eines Typ »G<U>« müssen der Dokumentation entnommen werden.
Beispielsweise ist »java.util.List<E>« ein Obertyp von »java.util.ArrayList<E>«, aber »java.util.ArrayList<java.lang.Object>« ist kein Obertyp von »java.util.ArrayList<java.lang.String>«.
Übungsfragen
? »java.io.PrintStream«
Welche Obertypen hat der Referenztyp »java.io.PrintStream«?
? »java.lang.Double«
Der Typ »double« ist ein Obertyp des Typs »int«; ist der Typ »java.lang.Double« ein Obertyp des Typs »java.lang.Integer«?