Razlika med virtualnim in abstraktnim

Razlika med virtualnim in abstraktnim
Razlika med virtualnim in abstraktnim

Video: Razlika med virtualnim in abstraktnim

Video: Razlika med virtualnim in abstraktnim
Video: IPHONE 4S VS SAMSUNG GALAXY S2 - КАКОЙ ЕЩЕ МОЖНО БРАТЬ? СРАВНЕНИЕ! 2024, November
Anonim

Virtual vs abstraktno

Virtual in Abstract sta dve ključni besedi, ki se uporabljata v večini objektno usmerjenih (OO) programskih jezikov, kot sta Java in C. Čeprav obstajajo majhne razlike v tem, kaj to pomeni v različnih jezikih, obe virtualni in abstraktni ključni besedi dajeta občutek delne implementacije entitetam, na katere se pripenjata.

Povzetek

Običajno abstraktnih razredov, znanih tudi kot abstraktni osnovni razredi (ABC), ni mogoče ustvariti (primerka tega razreda ni mogoče ustvariti). Torej so abstraktni razredi smiselni le, če programski jezik podpira dedovanje (zmožnost ustvarjanja podrazredov iz razširitve razreda). Abstraktni razredi običajno predstavljajo abstrakten koncept ali entiteto z delno implementacijo ali brez nje. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih so izpeljani podrejeni razredi, tako da bo podrejeni razred delil nepopolne funkcije nadrejenega razreda in za njihovo dokončanje je mogoče dodati funkcionalnost. Abstraktni razredi lahko vsebujejo abstraktne metode. Podrazredi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) abstraktne metode. Če podrejeni razred izvaja vse takšne abstraktne metode, je to konkreten razred. Če pa se ne, postane podrejeni razred tudi abstraktni razred. Vse to pomeni, da programer, ko nominira razred kot povzetek, pove, da bo razred nepopoln in bo imel elemente, ki jih morajo dopolniti nasledstveni podrazredi. To je lep način za ustvarjanje pogodbe med dvema programerjema, ki poenostavi naloge pri razvoju programske opreme. Programer, ki piše kodo za dedovanje, mora natančno slediti definicijam metode (lahko pa ima seveda svojo izvedbo). V Javi in C so abstraktni razredi in metode deklarirani s ključno besedo Abstract.

Virtual

Navidezne metode/funkcije nudijo možnost, da po želji preglasijo svoje vedenje s podedujočim razredom (z uporabo funkcije z enakim podpisom). Koncept navidezne funkcije je pomemben v naslednjem scenariju. Recimo, da je razred izpeljan s podrejenim razredom, potem se lahko vsakič, ko se uporabi objekt izpeljanega razreda, nanaša na objekt osnovnega razreda ali izpeljanega razreda. Toda vedenje pri klicu metode je lahko dvoumno, če so metode osnovnega razreda preglasene. Za razrešitev te dvoumnosti je torej uporabljena ključna beseda Virtual. Če je metoda označena z navideznim, se pokliče funkcija izpeljanega razreda (če obstaja) ali pa se pokliče funkcija osnovnega razreda. Na primer, v C++ se ključna beseda Virtual uporablja točno za ta namen. V C se ključna beseda Virtual uporablja na podoben način, toda poleg tega je treba uporabiti ključno besedo override za spreminjanje vseh preglasenih metod. Toda v Javi ni eksplicitne ključne besede Virtual. Vse nestatične metode veljajo za virtualne. Virtualne funkcije brez telesa se imenujejo čiste virtualne funkcije. V Javi in C so abstraktne metode pravzaprav čisto virtualne.

Razlika med virtualnim in abstraktnim

Čeprav sta Abstract in Virtual dve ključni besedi/koncepta, ki svojim povezanim entitetam dajeta pomen nepopolne implementacije, imata svoje razlike. Abstraktne metode (ki morajo biti definirane znotraj abstraktnih razredov) sploh nimajo implementacije, medtem ko imajo lahko virtualne metode implementacijo. Če so abstraktne metode razširjene s konkretnim razredom, morajo biti implementirane vse podedovane abstraktne metode, medtem ko se lahko podedovane virtualne metode preglasijo ali ne.

Priporočena: