Eine Klasse, die nicht instanziiert werden kann und mindestens eine abstrakte Methode enthält.
Was ist eine abstrakte Methode?
Eine Methode, die in der Basisklasse deklariert, aber nicht implementiert wird und von abgeleiteten Klassen überschrieben werden muss.
Wozu braucht man abstrakte Klassen?
Um eine gemeinsame Schnittstelle für alle abgeleiteten Klassen zu definieren und die Struktur zu erzwingen.
Wie definiert man eine abstrakte Klasse in Python?
Indem man ABC aus dem Modul abc als Basisklasse verwendet und abstractmethod als Dekorator für Methoden.
Warum sind abstrakte Klassen nützlich?
Sie ermöglichen es, gemeinsam genutzte Schnittstellen und Basisklassen zu erstellen, die sicherstellen, dass bestimmte Methoden in den abgeleiteten Klassen implementiert werden.
Kann eine abstrakte Klasse konkrete Methoden enthalten?
Ja, eine abstrakte Klasse kann sowohl abstrakte als auch konkrete Methoden enthalten.
Was passiert, wenn eine abgeleitete Klasse eine abstrakte Methode nicht implementiert?
Die abgeleitete Klasse bleibt selbst abstrakt und kann nicht instanziiert werden.
Wie verhindert eine abstrakte Klasse die Instanziierung?
Durch das Erben von ABC und das Definieren abstrakter Methoden wird die Instanziierung der abstrakten Klasse verhindert.
Was ist eine Subklasse?
Eine Klasse, die von einer anderen Klasse abgeleitet wird.
Was ist eine Superklasse?
Die Klasse, von der eine Subklasse abgeleitet ist.
Was erbt eine Subklasse von ihrer Superklasse?
Alle Members, d.h. Variablen und Methoden.
Was ist Mehrfachvererbung?
Eine Klasse kann mehrere direkte Superklassen haben.
Was passiert mit privaten Members bei der Vererbung?
Private Members werden grundsätzlich nicht vererbt.
Wie kann eine Subklasse eine Methode der Superklasse überschreiben?
Indem sie eine Methode mit demselben Namen deklariert.
Was ist `super()` in Python?
Eine Funktion, die den Zugriff auf die Methoden der Superklasse ermöglicht.
Wie wird `super()` in der `__init__`-Methode verwendet?
Um den Konstruktor der Superklasse innerhalb des Konstruktors der Subklasse aufzurufen.
Was ist eine abstrakte Klasse?
Eine Klasse, die nicht instanziiert werden soll und als Basis für andere Klassen dient.
Können Konstruktoren vererbt werden?
Konstruktoren werden nicht automatisch vererbt, aber sie können durch expliziten Aufruf in der Subklasse verwendet werden.
Was ist implizites Type Casting?
Instanzen einer Klasse können dort verwendet werden, wo Instanzen ihrer Superklasse erforderlich sind.
Was passiert, wenn eine Methode in einer Subklasse denselben Namen hat wie in der Superklasse?
Die Methode der Superklasse wird verborgen und die Methode der Subklasse wird verwendet.
Kann eine Subklasse auf die Methoden der Superklasse zugreifen, wenn sie sie überschreibt?
Ja, durch die Verwendung von `super()`.
Was erbt eine Subklasse von ihrer Superklasse?
Alle Members, d.h. Variablen und Methoden.
Kann eine Klasse mehr als eine Superklasse haben?
Ja, das wird Mehrfachvererbung genannt.
Was ist das Diamantproblem?
Ein Problem in der Mehrfachvererbung, bei dem eineKlassevonzweiKlassen erbt, die wiederum von einer gemeinsamenBasisklasse erben, was zu Mehrdeutigkeiten führt.
Warum wird es "Diamantproblem" genannt?
Weil die Klassenstruktur wie einDiamant aussieht: die unterste Klasse erbt von zwei Klassen, die wiederum von einer gemeinsamen Basisklasse erben.
Wie wird das Diamantproblem in Python gelöst?
Durch den Einsatz des Method Resolution Order (MRO) Algorithmus, der die Reihenfolge bestimmt, in der Basisklassen durchsucht werden.
Was ist MRO in Python?
Method Resolution Order,
Ein Algorithmus, der die Reihenfolge bestimmt, in der Basisklassen durchsucht werden, um Namenskonflikte zu vermeiden.