Video: Rozdíl Mezi Virtuální A Abstraktní
2024 Autor: Mildred Bawerman | [email protected]. Naposledy změněno: 2023-12-16 08:37
Virtuální vs. abstraktní
Virtuální a abstraktní jsou dvě klíčová slova používaná ve většině objektově orientovaných programovacích jazyků, jako jsou Java a C #. Ačkoli existují malé rozdíly v tom, co to znamená v různých jazycích, klíčová slova Virtual i Abstract poskytují smysl pro částečnou implementaci entit, ke kterým se připojuje.
Abstraktní
Typicky nelze vytvořit abstraktní třídy, známé také jako Abstraktní základní třídy (ABC) (nelze vytvořit instanci této třídy). Takže abstraktní třídy mají smysl pouze tehdy, pokud programovací jazyk podporuje dědičnost (schopnost vytvářet podtřídy z rozšíření třídy). Abstraktní třídy obvykle představují abstraktní koncept nebo entitu s částečnou nebo žádnou implementací. Proto abstraktní třídy fungují jako nadřazené třídy, ze kterých jsou odvozeny podřízené třídy, takže podřízená třída bude sdílet neúplné funkce nadřazené třídy a lze je přidat k jejich dokončení. Abstraktní třídy mohou obsahovat abstraktní metody. Podtřídy rozšiřující abstraktní třídu mohou implementovat tyto (zděděné) abstraktní metody. Pokud podřízená třída implementuje všechny takové abstraktní metody, jedná se o konkrétní třídu. Pokud tomu tak není,podřízená třída se také stane abstraktní třídou. To vše znamená, že když programátor nominuje třídu jako abstrakt, říká, že třída bude neúplná a bude obsahovat prvky, které je třeba doplnit zděděnými podtřídami. To je pěkný způsob, jak vytvořit smlouvu mezi dvěma programátory, což zjednodušuje úkoly při vývoji softwaru. Programátorka, která kód zdědí, musí přesně dodržovat definice metody (ale samozřejmě může mít vlastní implementaci). V Javě a C # jsou abstraktní třídy a metody deklarovány pomocí abstraktního klíčového slova. To je pěkný způsob, jak vytvořit smlouvu mezi dvěma programátory, což zjednodušuje úkoly při vývoji softwaru. Programátorka, která kód zdědí, musí přesně dodržovat definice metody (ale samozřejmě může mít vlastní implementaci). V Javě a C # jsou abstraktní třídy a metody deklarovány pomocí abstraktního klíčového slova. To je pěkný způsob, jak vytvořit smlouvu mezi dvěma programátory, což zjednodušuje úkoly při vývoji softwaru. Programátorka, která kód zdědí, musí přesně dodržovat definice metody (ale samozřejmě může mít vlastní implementaci). V Javě a C # jsou abstraktní třídy a metody deklarovány pomocí abstraktního klíčového slova.
Virtuální
Virtuální metody / funkce poskytují možnost volitelně přepsat své chování zděděnou třídou (pomocí funkce se stejným podpisem). Koncept virtuální funkce je důležitý v následujícím scénáři. Předpokládejme, že třída je odvozena podřízenou třídou, takže kdykoli je použit objekt odvozené třídy, může odkazovat na objekt základní třídy nebo odvozené třídy. Chování volání metody však může být nejednoznačné, pokud jsou přepsány metody základní třídy. Abychom tuto nejednoznačnost vyřešili, používá se klíčové slovo Virtual. Pokud je metoda označena jako virtuální, pak se volá funkce odvozené třídy (pokud existuje) nebo se volá funkce základní třídy. Například v C ++ se virtuální klíčové slovo používá přesně pro tento účel. V jazyce C # se klíčové slovo Virtual používá podobným způsobem, ale navícpřepsání klíčového slova by mělo být použito k úpravě všech přepsaných metod. Ale v Javě neexistuje výslovné klíčové slovo Virtual. Všechny nestatické metody jsou považovány za virtuální. Virtuální funkce bez těla se nazývají Pure Virtual functions. V Javě a C # jsou abstraktní metody ve skutečnosti Pure Virtual.
Rozdíl mezi virtuální a abstraktní
Ačkoli Abstract a Virtual jsou dvě klíčová slova / koncepty, které svým přidruženým entitám poskytují význam neúplné implementace, mají své rozdíly. Abstraktní metody (které musí být definovány uvnitř abstraktních tříd) vůbec nemají implementaci, zatímco virtuální metody mohou mít implementaci. Pokud jsou abstraktní metody rozšířeny o konkrétní třídu, musí být implementovány všechny zděděné abstraktní metody, zatímco zděděné virtuální metody mohou nebo nemusí být přepsány.
Doporučená:
Rozdíl Mezi Abstraktní Třídou A Dědičností
Abstract Class vs Inheritance Abstraktní třída a dědičnost jsou dva důležité objektově orientované koncepty, které se nacházejí v mnoha objektově orientovaných programovacích jazycích
Rozdíl Mezi Abstraktní Třídou A Rozhraním
Abstraktní třída a rozhraní Abstraktní třída a rozhraní jsou dva objektově orientované konstrukty nalezené v mnoha objektově orientovaných programovacích jazycích, jako je Java
Rozdíl Mezi Fyzickou A Virtuální Pamětí
Fyzická vs. virtuální paměť Fyzická paměť a virtuální paměť jsou dvě formy paměti používané pro ukládání dat v počítači. Fyzická paměť označuje čipy
Rozdíl Mezi Klíčovým Rozdílem Mezi Kovovými A Nekovovými Minerály
Klíčový rozdíl - kovové vs. nekovové minerály Minerál je přirozeně se vyskytující pevná a anorganická složka s určitým chemickým vzorcem a
Rozdíl Mezi Mezipamětí A Virtuální Pamětí
Cache Memory vs Virtual Memory Rozdíl mezi mezipamětí a virtuální pamětí existuje v účelu, pro který se tyto dvě používají, a ve fyz