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 Methodeeinsteigen()
. - Ein Lkw hat den Zweck, Güter zu transportieren. Die Klasse Lkw erhält die Attribute
ladungMax
und ladung, und die Methodebeladen()
.
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.