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!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn