===== 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.\\ {{modul:m320:learningunits:lu06:theorie:lu07-abb1.6-erweitern.png?600|}}\\ //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.\\ {{modul:m320:learningunits:lu06:theorie:lu07-abb1.7-ueberschreiben.png?600|}}\\ //Abb 6.7: //Visualisierung des Überschreibens in einer abgeleiteten Klasse ---- [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) René Probst