10.2 Kapselung und Vererbung
Aufgabe 10-3: Welche Implementierung der Methode blinken()
ist korrekt?
-
Worin unterscheiden sich die beiden Implementierungsversuche der Methode
blinken()
(vgl. Abb. 10-6a und 10-6b)? - Lesen Sie den Abschnitt „Merke: Kapselung und Vererbung“. Welcher der beiden Implementierungsversuche ist korrekt und welcher fehlerhaft? Begründen Sie Ihre Meinung.
Lösung
-
Der erste Versuch die Methode
blinken()
zu implementieren versucht direkt auf das Attributfarbe
zuzugreifen und diesem einen Wert zuzuweisen. Der zweite Versuch greift nicht direkt auf das Attributfarbe
zu, sondern nutzt hierfür die geerbte öffentliche MethodesetFarbe(pFarbe: String)
. -
Die Klasse
RoboterErweitert
ist eine Unterklasse der KlasseRoboter
. Sie besitzt daher auch deren Attributfarbe
. Da das Attribut in der KlasseRoboter
als privat deklariert worden ist, darf auch eine Unterklasse nicht direkt darauf zugreifen. Der erste Implementierungsversuch ist daher nicht korrekt.
Der zweite Implementierungsversuch nutzt stattdessen die von der KlasseRoboter
geerbete MethodesetFarbe(pFarbe: String)
. Diese Methode ist in der KlasseRoboter
als öffentlich deklariert worden. Wie jede Klasse darf die Unterklasse daher darauf zugreifen.
Aufgabe 10-4: robi.beschleunige()
Erstellen Sie in der Klasse RoboterErweitert
die öffentliche Methode beschleunige()
. Sofern der Roboter noch nicht seine Höchstgeschwindigkeit von 4 erreicht hat, soll der Aufruf dieser Methode seine Geschwindigkeit um 1 erhöhen.