Zum Hauptinhalt springen

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

Mini-QuizWas ist Ueberschreiben?

Override sitzt! Als Nächstes: super().