12 Vererbung

Cards (27)

  • Was ist eine abstrakte Klasse?
    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 eine Klasse von zwei Klassen erbt, die wiederum von einer gemeinsamen Basisklasse erben, was zu Mehrdeutigkeiten führt.
  • Warum wird es "Diamantproblem" genannt?
    Weil die Klassenstruktur wie ein Diamant 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.