Virtual vs Povzetek
Navidezni in izvleček sta dve ključni besedi, ki se uporabljata v večini predmetnih programskih jezikov, kot sta Java in C #. Čeprav obstajajo majhne razlike v tem, kaj to pomeni v različnih jezikih, tako virtualne kot abstraktne ključne besede dajejo občutek delne izvedbe subjektom, ki jih pripisuje.
Izvleček
Običajno razredov Abstrakcije, znanih tudi kot Abstraktni osnovni razredi (ABC), ni mogoče instancirati (primerka tega razreda ni mogoče ustvariti). Torej, abstraktne razrede je smiselno imeti le, če programski jezik podpira dedovanje (zmožnost ustvarjanja podrazredov iz razširitve razreda). Abstraktni razredi ponavadi predstavljajo abstraktni koncept ali entiteto z delnim izvajanjem ali brez njega. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih izhajajo razredi otrok, tako da bo otroški razred delil nepopolne lastnosti nadrejenega razreda in za dokončanje jih je mogoče dodati funkcionalnosti. Izvlečki lahko vsebujejo abstraktne metode. Podklasi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) Abstraktne metode. Če otroški razred izvaja vse take abstraktne metode, je to konkreten razred. Če pa tega ne, postane tudi razred otroka abstraktni razred. Vse to pomeni, da ko programer nominira razred za izvleček, pravi, da bo razred nepopoln in da bo imel elemente, ki jih morajo izpolniti podedovalni podklasi. To je lep način za ustvarjanje pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programer, ki napiše kodo za dedovanje, mora natančno slediti definicijam metod (seveda pa ima lahko tudi lastno izvedbo). V Java in C # so abstraktni razredi in metode deklarirani z uporabo ključne besede Abstract.
Navidezni
Navidezne metode / funkcije zagotavljajo možnost, da po izbiri preglasi svoje vedenje s podedovanim razredom (z uporabo funkcije z istim podpisom). Koncept navidezne funkcije je pomemben pri naslednjem scenariju. Recimo, da razred izhaja iz nadrejenega razreda, potem se lahko kadarkoli uporablja objekt izpeljanega razreda, nanaša na objekt osnovnega razreda ali na izpeljani razred. Vendar je vedenje klicev metode lahko dvoumno, če preglasimo metode osnovnega razreda. Torej, za rešitev te dvoumnosti se uporablja navidezna ključna beseda. Če je metoda označena kot navidezna, se funkcija izpeljanega razreda imenuje (če obstaja) ali pa se imenuje funkcija osnovnega razreda. Na primer, v C ++ se virtualna ključna beseda uporablja ravno v ta namen. V jeziku C # se na podoben način uporablja ključna beseda Virtual, poleg tega pa je treba spremeniti ključno besedo preoblikovanje vseh spremenjenih metod. Toda na Javi ni izrecne navidezne ključne besede. Vse nestatične metode veljajo za virtualne. Navidezne funkcije brez telesa se imenujejo Čiste navidezne funkcije. V Java in C # so abstraktne metode v resnici Čiste navidezne.
Razlika med navideznim in abstraktnim
Čeprav sta Abstraktno in Virtualno dve ključni besedi / pojma, ki zagotavljata pomen nepopolne izvedbe povezanih oseb, imata svoje razlike. Abstraktne metode (ki jih je treba definirati znotraj Abstraktnih razredov) sploh nimajo izvedbe, medtem ko imajo navidezne metode morda izvedbo. Če abstraktne metode razširimo s konkretnim razredom, je treba uporabiti vse podedovane abstraktne metode, medtem ko podedovane Virtualne metode lahko ali ne smejo biti prekrite.