Virtual vs Povzetek
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 rahle razlike v tem, kaj to pomeni v različnih jezikih, tako navidezne kot abstraktne ključne besede dajejo občutek delne izvedbe entitetam, ki jim je pripisan.
Povzetek
Običajno abstraktnih razredov, znanih tudi kot abstraktni osnovni razredi (ABC), ni mogoče izdelati v primerku (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 običajno predstavljajo abstraktni koncept ali entiteto z delno izvedbo ali brez nje. Zato abstraktni razredi delujejo kot nadrejeni razredi, iz katerih izhajajo podrejeni razredi, tako da si bo podrejeni razred delil nepopolne lastnosti nadrejenega razreda in je mogoče dodati funkcije za njihovo dokončanje. Abstraktni razredi lahko vsebujejo abstraktne metode. Podrazredi, ki razširjajo abstraktni razred, lahko izvajajo te (podedovane) abstraktne metode. Če podrejeni razred izvaja vse take abstraktne metode, je to konkreten razred. Če pa ne,otroški razred postane tudi abstraktni. Vse to pomeni, da ko programerka nominira razred za Povzetek, pravi, da bo razred nepopoln in bo imel elemente, ki jih je treba dopolniti z podedovanimi podrazredi. To je lep način za sklenitev pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programerka, ki piše kodo za dedovanje, mora natančno slediti definicijam metode (seveda pa ima lahko lastno izvedbo). V Java in C # so razredi in metode Abstract deklarirani s ključno besedo Abstract. To je lep način za sklenitev pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programerka, ki piše kodo za dedovanje, mora natančno slediti definicijam metode (seveda pa ima lahko lastno izvedbo). V Java in C # so razredi in metode Abstract deklarirani s ključno besedo Abstract. To je lep način za sklenitev pogodbe med dvema programerjema, ki poenostavlja naloge pri razvoju programske opreme. Programerka, ki piše kodo za dedovanje, mora natančno slediti definicijam metode (seveda pa ima lahko lastno izvedbo). V Java in C # so razredi in metode Abstract deklarirani s ključno besedo Abstract.
Virtualno
Navidezne metode / funkcije omogočajo, da po želji preglasijo svoje vedenje s podedovanim razredom (z uporabo funkcije z enakim podpisom). Koncept navidezne funkcije je pomemben v naslednjem scenariju. Recimo, da razred izpelje podrejeni razred, nato pa se lahko, kadar se uporablja objekt izpeljanega razreda, sklicuje na objekt osnovnega razreda ali izpeljanega razreda. Obnašanje klicev metode pa je lahko dvoumno, če preglasimo metode osnovnega razreda. Torej, da bi rešili to dvoumnost, se uporablja ključna beseda Virtual. Če je metoda označena z Virtual, se pokliče funkcija izpeljanega razreda (če obstaja) ali pa se pokliče funkcija osnovnega razreda. Na primer, v jeziku C ++ se v ta namen uporablja ključna beseda Virtual. V C # se ključna beseda Virtual uporablja na podoben način, vendar poleg tegapreglasitev ključne besede je treba uporabiti za spreminjanje vseh razveljavljenih metod. Toda v Javi ni eksplicitne ključne besede Virtual. Vse nestatične metode se štejejo za virtualne. Navidezne funkcije brez telesa se imenujejo čiste navidezne funkcije. V Java in C # so abstraktne metode pravzaprav čisti virtualni.
Razlika med virtualnim in abstraktnim
Čeprav sta abstraktna in navidezna dve ključni besedi / pojma, ki pomenita nepopolno izvedbo povezanih entitet, imata razlike. Abstraktne metode (ki jih je treba definirati znotraj abstraktnih razredov) sploh nimajo izvedbe, medtem ko lahko virtualne metode izvajajo. Če se abstraktne metode razširijo s konkretnim razredom, je treba implementirati vse podedovane abstraktne metode, podedovane virtualne metode pa lahko ali pa tudi ne.