Vererbung

Die Klasse Kfz enthält nur diejenigen Eigenschaften und Fähigkeiten, die jedes motorisierte Fahrzeug besitzt: Die Automarke, der km-Stand, das Tankvolumen, der Tankfüllstand und der Verbrauch sind die Attribute, tanken und fahren sind die Methoden.

Wir möchten 2 weitere Klassen von Fahrzeugen erstellen, die auch all diese Eigenschaften und Fähigkeiten besitzen, plus ein paar weitere:

  • Ein Pkw ist dazu da, Personen zu transportieren. Die Klasse Pkw erhält die Attribute sitzplaetze und mitfahrer, und die Methode einsteigen().
  • Ein Lkw hat den Zweck, Güter zu transportieren. Die Klasse Lkw erhält die Attribute ladungMax und ladung, und die Methode beladen().

Dies ist ein typischer Anwendungsfall für Vererbung in der objektorientierten Programmierung: Die Klassen Pkw und Lkw werden zu Subklasssen. Sie erben alle Attribute und Methoden von der Superklasse Kfz, und jede erhält zusätzlich ihre spezifischen Attribute und Methoden.

Vorbereitung - Klasse Kfz

Wenn Subklassen von einer Superklasse erben, müssen die Attribute, die in den Subklassen benutzt werden, auch zugänglich sein. Das heißt, diese Attribute müssen dann von private auf protected geändert werden.

In unserem Projekt betrifft das aber nur das Attribut marke: In neuen Methoden der Subklassen Pkw und Lkw wird marke benutzt. Die anderen Attribute werden nur in den Methoden der Superklasse Kfz benutzt, sie können also private bleiben.

Die einzige notwendige Änderung in der Klasse Kfz ist also der Sichtbarkeits-Modifikator von marke. Damit sieht die Attributliste von Kfz folgendermaßen aus.

protected String marke;
private int kmStand; 
private int tankMax;
private double tankAktuell;
private double verbrauch;

Nun können die Subklassen zur Klasse Kfz gebildet werden.