4. Anpassen und Erweitern

TODO SuMa, PrRe: @override aus Python >= 3.12 prüfen

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.

Erweitern

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.

Anpassen

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


© René Probst