Wat is een virtuele klas?

Een virtuele klasse is een klasse die slechts eenmaal wordt toegekend in het geheugen, zodanig dat kinderen van die klasse gebruik slechts één exemplaar van die ouder klasse, die is gevestigd in het geheugen. Een categorie is een groep van objecten die gemeenschappelijke eigenschappen of kenmerken delen. Het maken van een class virtuele geeft objectgeoriënteerde programmeertalen de mogelijkheid van het gebruik van multiple inheritance als tweede of meer generatie ouder klassen zijn afgeleid van gemeenschappelijke voorouderlijke base classes. Afhankelijk van de programmeertaal verwezen, de "virtuele" keyword, vergelijkbaar keyword of syntax en semantiek van een klasse worden gebruikt om aan een bepaalde klasse virtueel beschouwd.

Niet alle object georiënteerde programmeertalen kunnen meerdere overerving, dat wanneer een kind klasse kan worden afgeleid uit meerdere bovenliggende klassen tegelijk. In een programmeertaal zoals C ++, kan een klasse van het lid gegevens en lid functies van zowel ouder klassen erven in een keer en hebben toegang tot beide reeksen ouder gegevens en functies. Andere talen die multiple inheritance ondersteunen omvatten Perl, Python, Tcl, en Eiffel.

Een probleem doet zich in meerdere overervingshiërarchieën wanneer twee of meer ouders klassen gebruikt om een ​​kind klasse maken oorspronkelijk zijn afgeleid van één of dezelfde grootouder klasse. Dit wordt de diamant probleem, de naam voortvloeien uit hoe de hiërarchie zou er in deze situatie. Wanneer een compiler programma probeert een klasse instantiëren, zoals een kleinkind klasse gemaakt van twee bovenliggende klassen met een gemeenschappelijke grootouder, worden twee exemplaren van de grootouder die in het geheugen, een voor elke ouder.

Wijten aan de onduidelijkheid veroorzaakt door meerdere kopieën van dezelfde grootouder in het geheugen, de compiler niet in staat is om na te gaan welke kopiëren van de grootouder het kleinkind moet gebruiken om toegang te krijgen tot grootouder gegevens of functies. Om deze situatie te verhelpen, in C ++ de grootouder wordt gemaakt in een virtuele klas bij de aangifte van de ouders. Hierdoor wordt de compiler slechts één kopie van de grootouder geheugen dat beide ouders delen. Zodra de grootouder is een virtuele klasse, de compiler geen probleem beslissen hoe het kleinkind toegang moet de grootouder omdat er maar één kopie van de grootouder.

Grote zorg moet worden gehouden bij het vormgeven klassehiërarchieën, vooral wanneer ze zullen worden opgenomen in of worden de basis voor veel grotere hiërarchieën in de toekomst. Het juiste gebruik van een virtuele klas geeft klassehiërarchieën meer speelruimte in ontwikkeling; echter, zij het potentieel fouten moeilijk te lokaliseren veroorzaken. De studie van vaste computer programmeren engineering principes zal helpen om ervoor te zorgen dat de onverwachte bijwerkingen van oneigenlijk programma organisatie zich niet voordoen.

  • Het maken van een class virtuele geeft objectgeoriënteerde programmeertalen de mogelijkheid van het gebruik van multiple inheritance als tweede of meer generatie ouder klassen komen van gemeenschappelijke voorouderlijke base classes.