Warum Mehrfachvererbung in Java und C# nicht zulässig ist
Es ist bekannt, dass Mehrfachvererbung die Fähigkeit einer Klasse zum Erben ist aus mehreren übergeordneten Klassen ist in Java oder C# nicht zulässig. Während viele Quellen diese Tatsache lediglich angeben, gehen sie oft nicht auf die zugrunde liegenden Gründe für diese Designentscheidung ein.
Kurze Antwort:
Der Grund liegt einfach in der Sprache Die Designer haben beschlossen, es nicht aufzunehmen.
Längere Erklärung:
Die Designer beider .NET und Java kamen zu dem Schluss, dass die Mehrfachvererbung ihre Sprachen erheblich komplexer macht, aber nur minimale Vorteile bietet. Zu den Komplexitäten gehören:
-
Konfliktlösung: Bei der Mehrfachvererbung stellt sich die Frage, wie Konflikte gelöst werden können, wenn Methoden oder Eigenschaften mit demselben Namen von verschiedenen übergeordneten Klassen geerbt werden.
-
Redundanzbehandlung: In einigen Szenarien kann eine Mehrfachvererbung zu doppelten geerbten Mitgliedern führen. Dies kann zu Mehrdeutigkeit und Verwirrung führen.
-
Implementierungsaufwand: Das Hinzufügen von Mehrfachvererbung führt zu Komplexität in Bereichen wie Casting, Layout, Versand, Feldzugriff, Serialisierung und Generika.
Interviews mit Sprachdesignern:
Chris Brumme, der an der CLR für .NET gearbeitet hat, erläuterte die Entscheidung weiter:
- Verschiedene Sprachen haben unterschiedliche Erwartungen an MI, was es schwierig macht, eine universelle Lösung zu implementieren.
- Echte Anwendungen von MI sind oft begrenzt und Alternativen wie die Vererbung mehrerer Schnittstellen oder die Kapselung können oft ausreichen.
- Die Implementierung von MI würde erhebliche Änderungen erfordern zur Implementierung der Sprache, was sich auf verschiedene Funktionsbereiche auswirkt.
Für Java ist die Begründung ähnlich:
- Einfachheit, Vertrautheit und der Wunsch, unnötige C-Komplexitäten zu vermeiden Leitprinzipien im Java-Design.
- Die Designer glaubten, dass Mehrfachvererbung aufgrund ihrer Erfahrung mit C mehr Probleme bereiten als lösen würde .
Das obige ist der detaillierte Inhalt vonWarum haben Java und C# beschlossen, Mehrfachvererbung zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!