Sogenannte abstrakte Klassen können generische Verhaltensweisen zur Verfügung stellen. Darunter versteht man, daß die abstrakte Oberklasse das Verhalten definiert und teilweise implementiert. Bestimmte Elemente bleiben indes unbestimmt. Diese "Lücken" werden durch mittels Vererbung entstandene Unterklassen geschlossen; konkret muß natürlich der Programmierer die fehlende Funktionalität nachreichen. Fassen wir zusammen: Klassen können von anderen abgeleitet werden. Die (neue) abgeleitete Klasse wird Unterklasse genannt, die ursprüngliche heißt bezogen auf diesen Ableitungsvorgang Oberklasse. Bleibt die Frage nach dem Ursprung. Wenn wir auch beliebig oft Ableitungen bilden können, muß der ganze Vorgang doch irgendwo seinen Anfang nehmen. In Java bildet die Klasse java.lang.Object diese Wurzel (wir werden auf die hier gebrauchte Schreibweise später noch eingehen). Und wie findet die Vererbung in Form von Java Quelltext statt? Die Sprachdefinition bietet hierfür das Schlüsselwort extends, das wir auch im Programmbeispiel dieses Kursteils finden werden. Bemerkenswert ist in diesem Zusammenhang noch, daß Java keine Mehrfachvererbung kennt - eine Klasse in Java kann nur eine direkte Oberklasse haben. Lassen Sie mich nun zu Klassen und Objekten zurückkommen. Ich habe gesagt, daß ein Objekt aus Variablen und Methoden besteht, sowie, daß Klassen gleichsam Baupläne für Objekte sind. Bisher verschwiegen habe ich, daß es gilt, einen Unterschied zu machen zwischen Klassenvariablen und -methoden auf der einen, und Instanzvariablen und -methoden auf der anderen Seite. Nehmen wir an, Sie möchten eine Klasse Punkt entwickeln, die die x- und y-Koordinate eines zweidimensionalen Punkts enthält (bitte beachten Sie, daß Klasse java.awt.Point genau dies leistet). Zweckmäßigerweise wird die Klasse zwei Variablen, x und y, enthalten, die die beiden Werte speichern. Denken Sie aber immer daran, daß es sich hierbei letztlich um Aspekte der Implementierung handelt, daß in Java Objekte die zentrale Rolle spielen, nicht Variablen. In jedem Fall ist es offensichtlich, daß jedes Objekt, das auf der Klasse Punkt basiert, einen eigenen Satz an x- und y-Variablen enthalten muß. Methoden operieren auf Variablen. Wenn es eine Methode translate() gibt, die zu den beiden Koordinaten Werte addiert, dürfen sich natürlich nur die Variablen des Objekts ändern, an das die Nachricht translate geschickt wurde. Variablen und Methoden, die für jede Instanz einer Klasse existieren, heißen Instanzattribute. Klassenattribute hingegen beziehen sich auf die Klasse als ganzes, Änderungen sind daher in jeder Instanz sichtbar. JAVA - 5 / 10
|  |  | # 66