Skip to main content

Mi az a virtuális osztály?

A virtuális osztály egy olyan osztály, amelyet csak egyszer osztanak ki a memóriában, oly módon, hogy az osztály gyermekei csak a memóriában létrehozott szülői osztály egyetlen példányát használják.Az osztály olyan objektumok csoportja, amelyek közös tulajdonságokkal vagy attribútumokkal rendelkeznek.Az osztály virtuális készítése az objektum-orientált programozási nyelvek számára a többszörös öröklés felhasználásának képességét adja, ha a második vagy több generációs szülői osztály a közös ősi alaposztályokból származik.A hivatkozott számítógépes programozási nyelvtől függően a virtuális kulcsszó, a hasonló kulcsszó, vagy az osztály szintaxisát és szemantikáját arra használják, hogy egy adott osztályt virtuálisnak kell tekinteni.az, amikor egy gyermekosztály egyidejűleg több szülői osztályból származhat.Egy olyan programozási nyelven, mint a C ++, az osztály egyszerre örökölheti a tagok és a tagok funkcióit mindkét szülői osztályból, és hozzáférhet mind a szülői adatokhoz, mind a funkciókhoz.Más nyelvek, amelyek támogatják a többszörös öröklést, a Perl, a Python, a TCL és az Eiffel.Ezt a gyémántproblémának hívják, a névből, amely abból fakad, hogy a hierarchia hogyan néz ki ebben a helyzetben.Amikor egy fordító program megpróbál egy osztályt, például egy unokák osztályát, amelyet két szülői osztályból készítettek, közös nagyszülővel, a nagyszülő két példányát memóriába sorolják, mindegyik szülő számára egyet.

Az ugyanazon nagyszülő memóriájának több példánya által okozott kétértelműség miatt a fordító nem tudja megbizonyosodni arról, hogy a nagyszülő mely példánya az unokája felhasználja a nagyszülő adatok vagy funkciók elérését.A helyzet orvoslására a C ++ -ban a nagyszülőt virtuális osztályba sorolják, amikor a szülőket hirdetik.Ez miatt a fordító csak a nagyszülő egy példányát készíti a memóriában, amelyet mindkét szülő megoszt.Miután a nagyszülő virtuális osztálygá vált, a fordítónak nincs gondja annak eldöntése, hogy az unokák hogyan férhetnek hozzá a nagyszülőhöz, mivel a nagyszülőnek csak egy példánya van.vagy a jövőben sokkal nagyobb hierarchiák alapjául szolgálnak.A virtuális osztály megfelelő felhasználása az osztály hierarchiáinak nagyobb szélességet biztosít a fejlődésben;Ugyanakkor olyan hibákat okozhatnak, amelyeket nehéz megtalálni.A szilárd számítógépes programozási mérnöki alapelvek tanulmányozása elősegíti annak biztosítását, hogy a nem megfelelő programszervezet váratlan mellékhatásai ne forduljanak elő.