Sprachenspezifische Merkmale
In C++
Ermöglicht 'Virtuell' Polymorphismus, indem es abgeleiteten Klassen erlaubt, Methoden der Basisklasse zu überschreiben.
Virtuelle Funktionen: In C++ ist eine virtuelle Funktion eine Mitgliedsfunktion in einer Basisklasse, von der man erwartet, dass sie in abgeleiteten Klassen überschrieben werden kann. Wenn Sie sich auf ein
Objekt einer abgeleiteten Klasse mit einem Zeiger oder einem Verweis auf die Basisklasse verweisen, können Sie eine virtuelle Funktion für dieses Objekt aufrufen und die Version der Funktion der abgeleiteten Klasse ausführen.
Abstrakte Klassen: In C++ wird eine Klasse abstrakt gemacht, indem mindestens eine ihrer Funktionen als rein virtuell deklariert wird. Eine rein virtuelle Funktion wird angegeben durch Platzierung = 0 am Ende ihrer Deklaration.
Schnittstellen-Konzept: C++ verfügt nicht über ein eingebautes Schnittstellenschlüsselwort. Schnittstellen können jedoch mit abstrakten Klassen nachgeahmt werden, die nur rein virtuelle Funktionen beinhalten.
Java
Schnittstellen: Java hat ein eigenes Schlüsselwort für Schnittstellen. Eine Schnittstelle kann abstrakte Methoden und Konstanten enthalten. Klassen können mehrere Schnittstellen implementieren.
Virtuelle Methoden: In Java sind alle nicht-statischen Methoden standardmäßig
"virtuell", das heißt, sie können in abgeleiteten Klassen überschrieben werden. Die
tatsächliche Methode, die aufgerufen wird, wird zur Laufzeit auf der Grundlage des tatsächlichen Typs des Objekts bestimmt, nicht des Referenztyps.
Abstrakte Klassen: Eine abstrakte Klasse in Java wird mit dem Schlüsselwort abstract deklariert. Sie kann über abstrakte Methoden (Methoden ohne Körper), die von folgenden Unterklassen implementiert werden müssen.
Python
VirtuellVerwendung: Python hat kein spezielles Schlüsselwort für virtuelle Funktionen, aber Methodenüberschreibung und Polymorphismus werden von Haus aus unterstützt.
Zweck: Erreichen von Polymorphismus, indem abgeleiteten Klassen erlaubt wird, Methoden der Basisklasse zu überschreiben.
Abstrakt
DieVerwendung: Python verwendet das abc-Modul
, um abstrakte Basisklassen (ABCs) zu definieren. Abstrakte Methoden werden mit dem @abstractmethod-Dekorator
definiert.
Zweck: Eine Klasse zu erstellen, die nicht instanziiert werden kann und als Unterklasse angelegt werden muss, wobei die Unterklassen die abstrakten Methoden implementieren müssen.
Interface
Schnittstellen-Schlüsselwort
wie Java, aber ein ähnliches Verhalten kann mit ABCs und abstrakten Methoden erreicht werden.Zweck: Definition einer Reihe von Methoden, die implementierende Klassen bereitstellen müssen.