Java Reference
In-Depth Information
Die Beziehung einer übergeordneten Klasse zu ihren Subklassen ist streng hierarchisch
und heißt eben Vererbung. Jede Subklasse bekommt alle Eigenschaten und Methoden der
Superklasse vererbt, die dafür vorgesehen sind. Jede Subklasse sollte sinnvollerweise min-
destens eine Eigenschat oder Methode mehr haben, welche die Superklasse nicht hat, oder
vererbte Dinge irgendwie verändern.
Abgeleitete Klassen übernehmen die freigegebenen Eigenschaten und Methoden aller
übergeordneten Klassen. Die abgeleitete Klasse verwendet die Methoden der Superklasse.
Die Auswahl der Methoden oder Eigenschaten in der Klassenhierarchie ist so geregelt, dass
die gewünschte Methode beziehungsweise Eigenschat in der nächsthöheren Superklasse
gesucht wird, wenn eine Methode oder Eigenschat in einer konkreten Objektklasse nicht
vorhanden ist. Ist sie dort ebenfalls nicht vorhanden, erfolgt die Suche in der nächsthöheren
Klasse im Klassenbaum, bis die oberste Superklasse des Klassenbaums erreicht ist. Der
Zugrif erfolgt also in der ersten Klasse, in der ein Trefer erfolgt. 1
HInTErGrunDInFOrMATIOn: Der Begrif einer Klasse ist in JavaScript
etwas gefährlich, denn im strengen Sinn arbeitet JavaScript aktuell nicht mit
klassischen Klassen, wie echte OO-Sprachen, sondern sogenannten Prototypen .
Dabei ist die Anwendung zur Objekterzeugung für eine JavaScript-Programmie-
rung nicht von der Instanzierung einer Klasse in Java oder C# relevant zu unter-
scheiden. Wir werden deshalb meist den in der OOP üblichen Begrif der Klasse
verwenden. Doch worum geht es eigentlich bei Prototypen in JavaScript?
JavaScript beinhaltet einige „eingebaute Klassen“, aus denen native Objekte
erzeugt werden können (siehe Abschnitt 7.4). In JavaScript sind die Objektde-
klaration und damit auch sämtliche nativen Objekte alle von einer Grunddekla-
ration abgeleitet - dem globalen Objekt Object . Diese Objektdeklaration ist
also eine Art Superklasse aller Objektdeklarationen im JavaScript-Klassenbaum.
Bereits dieses globale Objekt enthält alle Grundeigenschaten und -methoden,
die jedes Objekt dann beinhaltet. Dies sind die Grundfunktionalitäten, die eine
Struktur braucht, um im System überhaupt als Objekt zu agieren. Alle Objekte
bei JavaScript erben also von wenigstens einem anderen Objekt. Das Objekt,
von dem geerbt wird, nennt man bei JavaScript auch Prototyp . Die vererbten
Eigenschaten können im Prototyp des Konstruktors gefunden werden, womit
diese Prototypen als Baupläne für Objekte in der Anwendung im Grunde nicht
relevant von Klassen zu unterscheiden sind.
Bei JavaScript ist im Grunde sowieso fast alles ein Objekt. Sogar alle einfachen
Typen, mit Ausnahme von null und undeined (was ja auch keine echten Typen
sind), werden wie Objekte behandelt. Damit haben auch diese einfachen Typen
Eigenschaten und Methoden. Aber auch die build-in-Funktionen sind von der
Philosophie her Methoden des globalen Objekts. Etwas inkonsistent in JavaScript
ist jedoch, dass numerische Variablen zwar als Objekte verstanden werden,
numerische Literale aber nicht, die damit keine Eigenschaten oder Methoden
bereitstellen 1 . Das ist meines Erachtens deshalb inkonsistent, weil String-Lite-
rale und auch boolesche Literale explizit Objekte darstellen und man direkt da-
rüber Methoden und Eigenschaten verwenden kann.
1 Für die Praxis hat das aber kaum Bedeutung.
Search WWH ::




Custom Search