- 1 Section
- 15 Lessons
- unbegrenzt
Expand all sectionsCollapse all sections
- Python Grundkurs16
- 1.1Was ist Python?
- 1.2Installation & Einrichtung
- 1.3Erstes Python Programm: Hallo Welt!
- 1.4Grundlegende Syntax
- 1.5Variablen und Datentypen
- 1.6Kontrollstrukturen
- 1.7Funktionen
- 1.8Module & Pakete
- 1.9Fehlerbehandlung
- 1.10Dateiverarbeitung
- 1.11Klassen und Objekte
- 1.12Vererbung und Polymorphismus
- 1.13Bibliotheken und Frameworks
- 1.14Aufgaben
- 1.15Lösungen
- 1.16Python11 Questions
Vererbung und Polymorphismus
1. Warum Vererbung?
In vielen Programmen gibt es Klassen, die ähnliche Eigenschaften haben.
Beispiel: Du hast Klassen für Auto, LKW, Motorrad.
Sie alle haben gemeinsame Attribute wie marke, farbe, baujahr
– aber leicht unterschiedliches Verhalten.
Anstatt denselben Code dreimal zu schreiben, kannst du eine Basisklasse (Elternklasse)
definieren und daraus Unterklassen ableiten.
2. Grundprinzip der Vererbung
class Fahrzeug:
def __init__(self, marke):
self.marke = marke
def fahren(self):
print(self.marke, "bewegt sich fort")
class Auto(Fahrzeug):
def __init__(self, marke, farbe):
super().__init__(marke) # ruft Konstruktor der Elternklasse auf
self.farbe = farbe
def hupen(self):
print(self.marke, "hupt laut!")
auto1 = Auto("BMW", "schwarz")
auto1.fahren()
auto1.hupen()
Ausgabe:
BMW bewegt sich fort
BMW hupt laut!
Erklärung:
| Konzept | Beschreibung |
|---|---|
Fahrzeug | Elternklasse (Basis) |
Auto(Fahrzeug) | Unterklasse, erbt von Fahrzeug |
super().__init__(...) | ruft Konstruktor der Elternklasse auf |
fahren() | geerbte Methode |
hupen() | neue Methode, nur in der Unterklasse |
3. Methoden überschreiben
Unterklassen können geerbte Methoden verändern,
um ihr Verhalten anzupassen.
class Fahrzeug:
def fahren(self):
print("Fahrzeug bewegt sich.")
class Fahrrad(Fahrzeug):
def fahren(self):
print("Das Fahrrad wird getreten.")
class Auto(Fahrzeug):
def fahren(self):
print("Das Auto fährt mit Motor.")
f1 = Fahrzeug()
f2 = Fahrrad()
f3 = Auto()
for f in (f1, f2, f3):
f.fahren()
Ausgabe:
Fahrzeug bewegt sich.
Das Fahrrad wird getreten.
Das Auto fährt mit Motor.
Das ist Polymorphismus:
Alle Objekte haben dieselbe Methode (fahren()),
aber jedes reagiert auf seine eigene Weise.
4. Erweiterung statt Überschreiben
Du kannst eine Methode auch erweitern,
indem du innerhalb der überschriebenen Methode die Elternversion mit super() aufrufst.
class Auto(Fahrzeug):
def fahren(self):
super().fahren() # Basisverhalten behalten
print("Das Auto fährt zusätzlich mit 120 km/h.")
5. Klassenhierarchie
| Klasse | Erbt von | Besondere Methoden |
|---|---|---|
Fahrzeug | – | fahren() |
Auto | Fahrzeug | hupen() |
Fahrrad | Fahrzeug | fahren() (überschrieben) |
Klassen und Objekte
Vorheriges
Bibliotheken und Frameworks
Nächstes
