Hoe lost virtuele overerving het diamantprobleem op?
Hoe lost virtuele overerving het diamantprobleem op?

Video: Hoe lost virtuele overerving het diamantprobleem op?

Video: Hoe lost virtuele overerving het diamantprobleem op?
Video: C++ Diamond problem in OOPS, Solution using Virtual Inheritance with Example 2024, November
Anonim

Virtuele overerving lost op de klassieke Diamant probleem ”. Het zorgt ervoor dat de childclass slechts één exemplaar van de gemeenschappelijke basisklasse krijgt. Met andere woorden, de Snake-klasse zullen hebben slechts één exemplaar van de klasse LivingThing. De klassen Dieren en Reptielen delen dit voorbeeld.

Wat is in dit opzicht het diamantprobleem bij overerving?

De diamant probleem ” is een ambiguïteit die kan ontstaan als gevolg van het toestaan van meerdere erfenis . Het is een serieuze probleem voor talen (zoals C++) die meerdere mogelijk maken erfenis van staat. In Java echter meerdere erfenis is niet toegestaan voor klassen, alleen voor interfaces, en deze bevatten geen state.

Vervolgens is de vraag, hoe een virtuele basisklasse helpt bij overerving? Virtuele basislessen bieden een manier om ruimte te besparen en onduidelijkheden in klas hiërarchieën die meerdere overervingen gebruiken. Wanneer een basisklasse wordt gespecificeerd als a virtuele basis , het kan als een indirecte baseren meer dan eens zonder duplicatie van zijn gegevensleden.

Weet ook, wat is virtuele openbare overerving?

Virtuele overerving is een C++-techniek die ervoor zorgt dat er slechts één kopie van de lidvariabelen van een basisklasse is geërfd door van kleinkind afgeleide klassen. Deze functie is het handigst voor meerdere erfenis , aangezien het de virtueel baseer een gemeenschappelijk subobject voor de afgeleide klasse en alle klassen die ervan zijn afgeleid.

Hoe lost Interface het diamantprobleem op?

Hoe werkt? een gebruiken koppel op Java oplossen de diamant probleem ? Dus als twee interfaces heeft dezelfde methode-handtekening en een klasse wil erven (implementeert in Java) van deze twee interfaces , er is geen "methodelichaam" om te erven, vandaar " diamant erfenis" probleem wordt vermeden.

Aanbevolen: