Különbség A Virtuális és Az Absztrakt Között

Különbség A Virtuális és Az Absztrakt Között
Különbség A Virtuális és Az Absztrakt Között
Anonim

Virtuális vs absztrakt

A virtuális és az absztrakt két kulcsszó, amelyet a legtöbb objektumorientált (OO) programozási nyelvben használnak, például a Java és a C #. Bár a különböző nyelvekben való jelentősége kismértékben különbözik egymástól, a virtuális és az absztrakt kulcsszavak részleges megvalósítás érzetét nyújtják az entitásokhoz, amelyekhez kapcsolódnak.

Absztrakt

Általában az absztrakt osztályokat, más néven Absztrakt alaposztályokat (ABC) nem lehet példányosítani (az osztály egy példánya nem hozható létre). Tehát az absztrakt osztályoknak csak akkor van értelme, ha a programozási nyelv támogatja az öröklést (az osztály kiterjesztéséből az alosztályok létrehozásának képessége). Az absztrakt osztályok általában elvont fogalmat vagy entitást képviselnek, részleges vagy semmilyen megvalósítással. Ezért az absztrakt osztályok szülőosztályként működnek, amelyekből gyermekosztályok származnak, így a gyermekosztály megosztja a szülőosztály hiányos jellemzőit, és a funkcionalitás hozzáadható azok teljesítéséhez. Az absztrakt osztályok tartalmazhatnak absztrakt módszereket. Az absztrakt osztályt kiterjesztő alosztályok megvalósíthatják ezeket az (öröklött) absztrakt módszereket. Ha a gyermekosztály az összes ilyen elvont módszert alkalmazza, akkor az konkrét osztály. De ha nem,a gyermekosztály absztrakt osztályzá is válik. Mindez azt jelenti, hogy amikor a programozó egy osztályt absztraktként jelöl, azt mondja, hogy az osztály hiányos lesz, és olyan elemekkel rendelkezik, amelyeket az öröklődő alosztályoknak kell kitölteniük. Ez egy jó módszer két programozó közötti szerződés létrejöttéhez, amely leegyszerűsíti a szoftverfejlesztés feladatait. A programozónak, aki öröklési kódot ír, pontosan követnie kell a módszer definícióit (de természetesen saját megvalósítása is lehet). A Java és a C # nyelven az absztrakt osztályokat és módszereket az Abstract kulcsszóval deklaráljuk. Ez egy jó módszer két programozó közötti szerződés létrejöttéhez, amely leegyszerűsíti a szoftverfejlesztés feladatait. A programozónak, aki öröklési kódot ír, pontosan követnie kell a módszer definícióit (de természetesen saját megvalósítása is lehet). A Java és a C # nyelven az absztrakt osztályokat és módszereket az Abstract kulcsszóval deklaráljuk. Ez egy jó módszer két programozó közötti szerződés létrejöttéhez, amely leegyszerűsíti a szoftverfejlesztés feladatait. A programozónak, aki öröklési kódot ír, pontosan követnie kell a módszer definícióit (de természetesen saját megvalósítása is lehet). A Java és a C # nyelven az absztrakt osztályokat és módszereket az Abstract kulcsszóval deklaráljuk.

Virtuális

A virtuális módszerek / függvények lehetőséget adnak arra, hogy opcionálisan felülírják a viselkedését egy öröklődő osztály segítségével (azonos aláírású függvény használatával). A virtuális függvény fogalma fontos a következő forgatókönyvben. Tegyük fel, hogy egy osztályt gyermekosztály származtat, majd amikor a származtatott osztály objektumát használják, az az alaposztály vagy a származtatott osztály objektumára utalhat. De a metódus hívási viselkedése kétértelmű lehet, ha az alaposztály metódusait felülbírálják. Tehát ennek a kétértelműségnek a feloldása érdekében a Virtuális kulcsszót használjuk. Ha a metódust virtuálisnak jelöljük, akkor a származtatott osztály függvényét hívjuk meg (ha van ilyen), vagy pedig az alaposztály függvényét hívjuk meg. Például a C ++ - ban a virtuális kulcsszót pontosan erre a célra használják. A C # -ban a Virtuális kulcsszót hasonló módon használják, de emellettaz override kulcsszó segítségével módosítani kell az összes felülbírált módszert. De a Java-ban nincs kifejezett virtuális kulcsszó. Az összes nem statikus módszert virtuálisnak tekintjük. A test nélküli virtuális függvényeket Pure Virtual függvényeknek nevezzük. A Java és a C # nyelven az absztrakt módszerek valójában tiszta virtuálisak.

Különbség a virtuális és az absztrakt között

Bár az Absztrakt és a Virtuális két kulcsszó / fogalom, amely a hiányos megvalósítás jelentését adja a társult entitásoknak, mégis vannak különbségeik. Az absztrakt módszereknek (amelyeket az absztrakt osztályokon belül kell meghatározni) egyáltalán nincs megvalósításuk, míg a virtuális módszereknek lehet megvalósításuk. Ha az absztrakt módszereket egy konkrét osztály kiterjeszti, akkor az összes örökölt absztrakt módszert végre kell hajtani, míg az öröklött virtuális módszereket felül lehet írni.

Ajánlott: