Methoden überschreiben
Beispiel
class Tier:
def sprich(self):
print("...")
class Hund(Tier):
def sprich(self):
print("Wuff!")
class Katze(Tier):
def sprich(self):
print("Miau!")
for t in [Hund(), Katze(), Tier()]:
t.sprich()
Dieselbe Methodenname, anderes Verhalten – Überschreiben (Override).
Rate mal!
Welches sprich gewinnt bei Hund?
Auflösung
Das in Hund – spezieller schlägt allgemeiner beim Aufruf auf Hund-Objekten.
Probiere es selbst
Experiment 1
Basis info, Unterklasse überschreibt.
Experiment 2
for über verschiedene Typen.
Experiment 3
Eine Methode nicht überschreiben, eine schon.
Fehlerdetektiv
Tippfehler im Methodennamen: sprech statt sprich – dann erbt man die Basis still.
Übungen
Level 1
Überschreibe greet.
Level 2
Zwei Unterklassen, unterschiedliche greet.
Level 3
Polymorphie-Demo: Liste gemischt, gleiche Methode.
Level-1-Lösung
class Basis:
def greet(self):
print("Hallo")
class Spezial(Basis):
def greet(self):
print("Moin!")
Spezial().greet()
Mini-Quiz
Override sitzt! Als Nächstes: super().