Razlika između virtuelnog i apstraktnog

Razlika između virtuelnog i apstraktnog
Razlika između virtuelnog i apstraktnog

Video: Razlika između virtuelnog i apstraktnog

Video: Razlika između virtuelnog i apstraktnog
Video: IPHONE 4S VS SAMSUNG GALAXY S2 - КАКОЙ ЕЩЕ МОЖНО БРАТЬ? СРАВНЕНИЕ! 2024, Novembar
Anonim

Virtualni vs sažetak

Virtual i Abstract su dvije 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 značenju na različitim jezicima, i virtuelne i apstraktne ključne riječi pružaju osjećaj djelomične implementacije entitetima za koje se vežu.

Sažetak

Tipično, apstraktne klase, poznate i kao apstraktne osnovne klase (ABC), ne mogu biti instancirane (instanca te klase se ne može kreirati). Dakle, apstraktne klase imaju smisla samo ako programski jezik podržava nasljeđivanje (sposobnost kreiranja podklasa iz proširenja klase). Apstraktne klase obično predstavljaju apstraktni koncept ili entitet sa delimičnom ili bez implementacije. Stoga se apstraktne klase ponašaju kao roditeljske klase iz kojih su izvedene podređene klase, tako da će podređena klasa dijeliti nepotpune karakteristike roditeljske klase i može se dodati funkcionalnost da ih dovrši. Apstraktne klase mogu sadržavati apstraktne metode. Potklase koje proširuju apstraktnu klasu mogu implementirati ove (naslijeđene) apstraktne metode. Ako podređena klasa implementira sve takve apstraktne metode, to je konkretna klasa. Ali ako to ne učini, podređena klasa takođe postaje apstraktna klasa. Sve ovo znači da, kada programer nominuje klasu kao apstraktnu, ona kaže da će klasa biti nekompletna i da će imati elemente koje treba da dopune nasledne podklase. Ovo je lijep način za kreiranje ugovora između dva programera, što pojednostavljuje zadatke u razvoju softvera. Programer, koji piše kod za nasljeđivanje, treba tačno pratiti definicije metoda (ali naravno može imati vlastitu implementaciju). U Javi i C, apstraktne klase i metode se deklariraju pomoću ključne riječi Abstract.

Virtuelno

Virtualne metode/funkcije pružaju mogućnost opcionog nadjačavanja njegovog ponašanja od strane naslijeđene klase (koristeći funkciju sa istim potpisom). Koncept virtualne funkcije važan je u sljedećem scenariju. Pretpostavimo da je klasa izvedena od strane podređene klase, onda kad god se koristi objekat izvedene klase, može se odnositi na objekat osnovne klase ili izvedene klase. Ali, ponašanje poziva metode može biti dvosmisleno ako su metode osnovne klase poništene. Dakle, da bi se riješila ova dvosmislenost, koristi se virtualna ključna riječ. Ako je metoda označena kao Virtual, tada se poziva funkcija izvedene klase (ako postoji) ili se poziva funkcija osnovne klase. Na primjer, u C++, virtualna ključna riječ se koristi upravo u tu svrhu. U C, virtuelna ključna reč se koristi na sličan način, ali pored toga, ključna reč override bi trebalo da se koristi za modifikaciju svih zamenjenih metoda. Ali u Javi ne postoji eksplicitna virtuelna ključna reč. Sve nestatičke metode se smatraju virtuelnim. Virtualne funkcije bez tijela nazivaju se čiste virtualne funkcije. U Javi i C, apstraktne metode su u stvari Pure Virtual.

Razlika između virtuelnog i apstraktnog

Iako su apstraktno i virtuelno dvije ključne riječi/koncepta koji daju značenje nepotpune implementacije svojim povezanim entitetima, oni imaju svoje razlike. Apstraktne metode (koje moraju biti definirane unutar apstraktnih klasa) nemaju implementaciju uopće, dok virtualne metode mogu imati implementaciju. Ako su apstraktne metode proširene konkretnom klasom, sve naslijeđene apstraktne metode moraju biti implementirane, dok naslijeđene virtualne metode mogu, ali i ne moraju biti nadjačane.

Preporučuje se: