Das Konzept der Vererbung weist zwei grundlegende Aspekte betreffend der Auswirkungen auf die Programmausgestaltung aus. Eine Unterklasse kann Code erweitern oder Code in angepasster Form ausführen.
Das Wort „erweitern“ sagt bereits klar aus, was hier Sache ist. Eine Unterklasse erhält in diesem Fall zusätzliche Attribute und Methoden.
Beispiel 6.3:
SalaryAccount
erweitert BancAccount
um die Funktion für den Kontoüberzug. Hier mit dem Attribut overdraw
und der Methode get_overdraw()
dargestellt.
Abb 6.6: Elemente einer erweiterten Klasse
Ein Objekt der Klasse SalaryAccount
ist somit immer auch ein Objekt der Klasse BancAccount
.
Bei der Vererbung weist die abgeleitet Klasse (Unterklasse) immer auch den Typ - die Klasse - der Oberklassen auf.
Wird in einer Unterklasse eine „Anpassung“ vorgenommen, so heisst dies, dass eine gegebene Funktionalität (eine Methode) anders ausgeführt wird. In der Fachsprache nennt man dies auch „überschreiben“ (overwriting) einer Methode.
Beispiel 6.4:
SalaryAccount
überschreibt die Methode withdraw_money()
aus BancAccount
. So ist es nun möglich, durch den Aufruf der „gleichen“ Methode - zumindest was den Namen der Methode betrifft - einen anderen Ablauf auszuführen. Während BancAccount
keine Bezüge zulässt, die zu einem negativen Saldo führen, kann SalaryAccount
dies tun.
Abb 6.7: Visualisierung des Überschreibens in einer abgeleiteten Klasse