3.4    Vererbung

Falls Sie eine Klasse benötigen, die Eigenschaften besitzt, die bereits in einer anderen Klasse definiert werden, so können Sie das Prinzip der Vererbung benutzen. Sie erschaffen eine abgeleitete Klasse auf der Grundlage einer Basisklasse und fügen weitere Eigenschaften hinzu.

Im folgenden Beispiel wird die abgeleitete Klasse Lastwagen erschaffen, auf der Grundlage der Basisklasse Fahrzeug. Ein Objekt der Klasse Lastwagen soll die zusätzliche Eigenschaft nutzlast und die zusätzliche Methode beladen() haben. Außerdem verfügen beide Klassen jeweils über eine eigene Definition der Methode toString().

Es folgt das Programm:

<!DOCTYPE html><html><head><meta charset="utf-8">
<title>Vererbung</title>
<script>
      class Fahrzeug
{
constructor(f, g)
{
this.farbe = f;
this.geschwindigkeit = g;
}

beschleunigen(wert)
{
this.geschwindigkeit += wert;
}

toString()
{
return "Farbe: " + this.farbe
+ ", Geschwindigkeit: " + this.geschwindigkeit;
}
}

class Lastwagen extends Fahrzeug
{
constructor(f, g, n)
{
super(f, g);
this.nutzlast = n;
}

beladen(wert)
{
this.nutzlast += wert;
}

toString()
{
return super.toString() + ", Nutzlast: " + this.nutzlast;
}
}
   </script>
</head>
<body><p>
<script>
      var iveco = new Lastwagen("Orange", 30, 15);
document.write(iveco + "<br>");

iveco.beschleunigen(50);
iveco.beladen(25);
document.write(iveco);
   </script></p>
</body></html>

Listing 3.4    Datei »obj_vererbung.htm«

Der Konstruktor der Basisklasse Fahrzeug erwartet zwei Parameter für die Anfangswerte der Eigenschaften farbe und geschwindigkeit. Der Konstruktor der abgeleiteten Klasse Lastwagen erwartet drei Parameter. Dabei handelt es sich um die Anfangswerte für die Eigenschaften farbe und geschwindigkeit der Basisklasse Fahrzeug und für die Eigenschaft nutzlast der abgeleiteten Klasse Lastwagen.

Die Methode super() ruft innerhalb eines Konstruktors den jeweiligen Konstruktor der Basisklasse auf. Auf diese Weise werden hier die ersten beiden Parameter an den Konstruktor der Basisklasse weitergereicht. Der dritte Parameter wird der Eigenschaft nutzlast zugewiesen. Auf diese Weise erhalten alle Eigenschaften des Objekts der Klasse Lastwagen einen Anfangswert.

Zudem gibt es auch den besonderen Verweis super, der für den Zugriff auf die Eigenschaften und Methoden der Basisklasse dient. In der Methode toString() der abgeleiteten Klasse Lastwagen wird damit die gleichnamige Methode der Basisklasse Fahrzeug aufgerufen: super.toString().

Im Programm wird ein Objekt der Klasse Lastwagen mit drei Anfangswerten erzeugt und ausgegeben. Es wird durch den Aufruf der Methode beschleunigen() der Basisklasse und durch den Aufruf der Methode beladen() der abgeleiteten Klasse verändert. Anschließend wird es erneut ausgegeben, siehe Abbildung 3.4.

Vererbung

Abbildung 3.4    Vererbung