Vererbung

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Das Klonen von Objekten

Ein Prototyp dient als Vorlage für neue Objekte. Jedes bereits vorhandene Objekt kann ein Prototyp sein. Die neuen Objekte erhalten alle Eigenschaften und Methoden ihres Prototypen: Sie erben diese. In JavaScript können Objekte mit der Anweisung Object.Create(prototype) erzeugt werden.

Ein Prototyp ist die Vorlage für ein neues Objekt. Das neue Objekt erbt alle Methoden und Attribute von seinem Prototypen.

Das neue Objekt hat die gleiche Masse wie das Altmetall, aber es hat eine andere Form. Objekte können die Eigenschaften und Funktionen ihrer Prototypen ändern oder neue hinzufügen.

Die Eigenschaft masseInKg des Objekts neumetall referenziert (verweist auf) die Eigenschaft vonaltmetall. Das heißt, es speichert den Wert der Variablen nicht selbst, sondern leitet den Aufruf an den Prototypen weiter.

Der Wert einer Eigenschaft eines Objekts ändert sich, wenn sich der Wert des Prototypen ändert.

Ob ein Objekt eine eigene Eigenschaft besitzt oder diese durch seinen Prototypen erlangt, kann man durch hasOwnProperty("property") überprüfen, welche alle Objekte von Object erben.

Vererbung zwischen Klassen

Durch die Vererbung zwischen Klassen können spezifische Klassen von allgemeinen Klassen abgeleitet werden. Es ist damit möglich, Klassenhierarchien zu konstruieren, in denen eine allgemeine Klasse (z.B. Lebewesen) immer weiter spezifiziert wird, bis man zu konkreten Ausprägungen wie dem LoxodontaAfricana kommt. In der allgemeinen Klasse können Methoden definiert werden, die alle Lebewesen haben, beispielsweise vererben() oder wachsen(). In einer Unterklasse von Lebewesen können dann die Merkmale von Säugetieren spezifiziert werden. In der konkreten Klasse HomoSapiens werden dann letztendlich die Merkmale und Funktionen eines Menschen beschrieben. Die vererbende Klasse nennt man Ober-, Basis- oder Superklasse, die erbende Unter- oder Subklasse.

Durch Vererbung können spezifische von allgemeinen Klassen abgeleitet werden.

JavaScript

Damit Klassen voneinander erben, muss die Eigenschaft prototype der Klasse ein Objekt der Oberklasse referenzieren.

Peter kann Eigenschaften und Funktionen der Klassen Lebewesen, Säugetier und Mensch aufrufen. Er ist ein Objekt von all diesen Klassen.

Möchte man jetzt noch eine Klasse Person erstellen, kann diese von Mensch erben. Mensch hat aber einen parametrisierten Konstruktor. Damit die Klasse Person die Variablen, die auch die Oberklasse besitzt, nicht selbst speichern muss, werden diese an die Oberklasse übergeben.

So nicht, sondern so:

Die call-Methode der Oberklasse wird mit this sowie allen zu übergebenden Parametern aufgerufen. Danach sind die Werte in der Klasse Mensch gespeichert.

Vererbung in UML

Flogerlinghoff Vererbung.png

Vererbung wird durch einen Pfeil von der erbenden zur Basisklasse dargestellt. Geerbte Methoden und Attribute werden nicht noch einmal mit aufgezählt.

Aufgaben

Erstelle eine geeignete Klassenhierarchie aus folgenden Klassen:

  • SUV
  • PKW
  • Fahrzeug
  • Zug
  • Luftfahrzeug
  • Schiff
  • Flugzeug
  • Landfahrzeug
  • Wasserfahrzeug
  • LKW
  • Fahrrad

 

Quelltext überprüfen:

Persönliche Werkzeuge