Junior — Middle
Wie unterscheiden sich die Vererbungsmechanismen in den Programmiersprachen Python und C#?
sobes.tech KI
Antwort von AI
In Python und C# haben die Vererbungsmechanismen gemeinsame Merkmale, aber auch wichtige Unterschiede:
-
Python:
- Unterstützt Mehrfachvererbung: Eine Klasse kann von mehreren Basisklassen erben.
- Verwendet die Methode der Reihenfolgeauflösung (MRO, Method Resolution Order), um die Reihenfolge der Methodenausführung bei Mehrfachvererbung zu bestimmen.
- Alle Klassen erben standardmäßig von der Basisklasse
object. - Die Vererbung ist dynamisch, Attribute und Methoden können zur Laufzeit geändert werden.
-
C#:
- Unterstützt nur einfache Vererbung: Eine Klasse kann nur von einer Basisklasse erben.
- Für Mehrfachvererbung wird das Mechanismus der Schnittstellen (Interfaces) verwendet: Eine Klasse kann mehrere Schnittstellen implementieren.
- Die Vererbung ist strikt typisiert und statisch.
Beispiel für Mehrfachvererbung in Python:
class A:
def method(self):
print("A")
class B:
def method(self):
print("B")
class C(A, B):
pass
c = C()
c.method() # Gibt "A" aus, entsprechend MRO
In C# wird dies durch Schnittstellen realisiert:
interface IA { void Method(); }
interface IB { void Method(); }
class C : IA, IB {
public void Method() {
Console.WriteLine("C");
}
}
Das Hauptunterscheidungsmerkmal ist also, dass Python Mehrfachvererbung von Klassen direkt unterstützt, während C# nur einfache Vererbung unterstützt, aber Mehrfachvererbung durch Schnittstellen ermöglicht.