Razlika između virtualnog i apstraktnog

Virtualno vs Sažetak

Virtualna i Sažetak dvije su ključne riječi koje se koriste u većini objektno orijentiranih (OO) programskih jezika kao što su Java i C #. Iako postoje male razlike u tome što to znači na različitim jezicima, i virtualne i sažetak ključne riječi daju djelomičnu implementaciju entitetima kojima se pridružuju..

Sažetak

Obično se apstraktne klase, poznate i kao apstraktne osnovne klase (ABC), ne mogu instancirati (instanca te klase se ne može stvoriti). Dakle, apstraktne klase imaju smisla imati samo ako programski jezik podržava nasljeđivanje (sposobnost stvaranja potklasa iz proširenja klase). Sažetak nastave obično predstavlja apstraktni koncept ili cjelinu s djelomičnom ili nikakvom provedbom. Dakle, Sažeci klase djeluju kao nadređeni klase iz kojih potječu razrede djece, tako da će dječja klasa dijeliti nepotpune značajke roditeljske klase, a može se dodati funkcionalnost da ih ispuni. Sažeci mogu sadržavati apstraktne metode. Podklase koje proširuju apstraktnu klasu mogu implementirati ove (naslijeđene) Sažetak metode. Ako dječja klasa provodi sve takve apstraktne metode, to je konkretan razred. Ali ako to ne uspije, dječji razred postaje i apstraktni razred. Sve to znači da, kada programer nominira klasu kao Sažetak, ona kaže da će klasa biti nepotpuna i da će imati elemente koje treba ispuniti nasljeđujućim podrazredima. Ovo je lijep način za sklapanje ugovora između dva programera, što pojednostavljuje zadatke u razvoju softvera. Programer, koji piše kôd da naslijedi, mora točno slijediti definicije metoda (ali naravno može imati i vlastitu implementaciju). U Java i C #, Sažeci klase i metode se deklariraju pomoću ključne riječi Sažetak.

Virtualan

Virtualne metode / funkcije pružaju mogućnost izbornog prevladavanja svog ponašanja nasljeđujućom klasom (koristeći funkciju s istim potpisom). Koncept virtualne funkcije važan je u sljedećem scenariju. Pretpostavimo da klasu proizlazi iz podređene klase, pa kad god se koristi objekt izvedene klase može se odnositi na objekt osnovne klase ili izvedenu klasu. No, ponašanje poziva poziva metode može biti dvosmisleno ako se prevladaju metode osnovne klase. Dakle, za rješavanje ove nejasnoće koristi se virtualna ključna riječ. Ako je metoda označena kao Virtualna, tada se funkcija izvedene klase zove (ako postoji) ili se inače zove funkcija osnovne klase. Na primjer, u C ++, virtualna ključna riječ koristi se upravo u tu svrhu. U C # se virtualna ključna riječ koristi na sličan način, ali osim toga, ključna riječ override trebala bi se koristiti za izmjenu svih poništenih metoda. Ali u Javi ne postoji eksplicitna virtualna ključna riječ. Sve nestatičke metode smatraju se virtualnim. Virtualne funkcije bez tijela nazivaju se Čiste virtualne funkcije. U Javi i C #, Apstraktne metode su zapravo Čista virtualna.

Razlika između virtualnog i apstraktnog

Iako su sažetak i virtualno dvije ključne riječi / koncepta koji daju značenje nepotpune implementacije povezanim entitetima, one imaju svoje razlike. Apstraktne metode (koje se moraju definirati unutar sažetaka klase) uopće nemaju implementaciju, dok virtualne metode mogu imati implementaciju. Ako se Apstraktne metode prošire konkretnom klasom, moraju se primijeniti sve naslijeđene metode Sažetak, dok naslijeđene Virtualne metode mogu ili ne moraju biti poništene.