Waarom wordt meerdere overerving ondersteund in C++ maar niet in Java?
Waarom wordt meerdere overerving ondersteund in C++ maar niet in Java?

Video: Waarom wordt meerdere overerving ondersteund in C++ maar niet in Java?

Video: Waarom wordt meerdere overerving ondersteund in C++ maar niet in Java?
Video: Why multiple inheritance not supported by java? #javainterview #multipleinheritance #inheritance 2024, November
Anonim

C++ , Gemeenschappelijke lisp en enkele andere talen ondersteunt meerdere overerving terwijl Java niet steun het. Java staat niet toe meervoudige overerving om de onduidelijkheid die daardoor ontstaat te vermijden. Een van de voorbeelden van een dergelijk probleem is het diamantprobleem dat voorkomt in meervoudige overerving.

Dienovereenkomstig, waarom wordt meervoudige overerving niet ondersteund in Java?

Java ondersteunt meervoudige overerving alleen via interfaces. Een klasse kan een willekeurig aantal interfaces implementeren, maar kan slechts één klasse uitbreiden. Meerdere overerving is niet ondersteund omdat het leidt tot een dodelijk diamantprobleem. Jij haal geen functionaliteit uit de interface.

Wat is ook het Diamond-probleem bij meervoudige overerving? De diamant probleem ” is een ambiguïteit die kan ontstaan als gevolg van het toestaan van meervoudige overerving . Het is een serieuze probleem voor talen (zoals C++) die het mogelijk maken: meervoudige overerving van staat. Op Java echter meervoudige overerving is niet toegestaan voor klassen, alleen voor interfaces, en deze bevatten geen status.

Evenzo vragen mensen: waarom ondersteunt C++ meerdere overerving en C# niet?

Meerdere overerving in C# C# ondersteunt geen meervoudige overerving , omdat ze redeneerden dat het toevoegen van meervoudige overerving te veel complexiteit toegevoegd om C# terwijl het te weinig voordeel oplevert. In C# , de lessen zijn alleen toegestaan om erven van een eenouderklasse, die single. wordt genoemd erfenis.

Hoe ondersteunt C++ meervoudige overerving?

In tegenstelling tot veel andere objectgeoriënteerde programmeertalen, C++ staat toe meervoudige overerving . Meerdere overerving laat een kindklas toe erven uit meer dan één ouderklasse. De lessen Dieren en Reptielen erven ervan. Alleen de klasse Animal heeft voorrang op de methode breath().