Razlika između virtualnog i apstraktnog

Razlika između virtualnog i apstraktnog
Razlika između virtualnog i apstraktnog

Video: Razlika između virtualnog i apstraktnog

Video: Razlika između virtualnog i apstraktnog
Video: The main DIFFERENCES between IaaS, SaaS and PaaS explained... 2024, Srpanj
Anonim

Virtualno vs apstraktno

Virtualno i sažetak 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 virtualne i apstraktne ključne riječi daju osjećaj djelomične implementacije entitetima kojima se pridaju.

Sažetak

Tipično, apstraktne klase, poznate i kao apstraktne osnovne klase (ABC), ne mogu se instancirati (instanca te klase ne može se kreirati). Dakle, apstraktne klase imaju smisla samo ako programski jezik podržava nasljeđivanje (mogućnost stvaranja podklasa iz proširenja klase). Apstraktne klase obično predstavljaju apstraktni koncept ili entitet s djelomičnom ili nikakvom implementacijom. Stoga se apstraktne klase ponašaju kao nadređene klase iz kojih su izvedene podređene klase, tako da podređena klasa dijeli nepotpune značajke nadređene klase i može se dodati funkcionalnost da ih dovrši. Apstraktne klase mogu sadržavati apstraktne metode. Podklase koje proširuju apstraktnu klasu mogu implementirati ove (naslijeđene) apstraktne metode. Ako klasa dijete implementira sve takve apstraktne metode, to je konkretna klasa. Ali ako ne, klasa dijete također postaje apstraktna klasa. Sve to znači da, kada programer nominira klasu kao sažetak, on govori da će klasa biti nepotpuna i da će imati elemente koje trebaju dovršiti naslijeđene podklase. Ovo je lijep način za stvaranje ugovora između dva programera, koji pojednostavljuje zadatke u razvoju softvera. Programer koji piše kod za nasljeđivanje mora točno slijediti definicije metode (ali naravno može imati vlastitu implementaciju). U Javi i C, apstraktne klase i metode deklarirane su pomoću ključne riječi Abstract.

Virtualno

Virtualne metode/funkcije daju mogućnost opcionalnog nadjačavanja ponašanja nasljeđujućom klasom (koristeći funkciju s istim potpisom). Koncept virtualne funkcije važan je u sljedećem scenariju. Pretpostavimo da je klasa izvedena od strane podređene klase, tada kad god se koristi objekt izvedene klase, može se odnositi na objekt osnovne klase ili izvedene klase. Ali ponašanje poziva metode može biti dvosmisleno ako su metode osnovne klase nadjačane. Dakle, da bi se riješila ova dvosmislenost, koristi se ključna riječ Virtual. Ako je metoda označena kao virtualna, tada se poziva funkcija izvedene klase (ako postoji) ili se poziva funkcija osnovne klase. Na primjer, u C++-u, ključna riječ Virtual koristi se upravo u tu svrhu. U C se ključna riječ Virtual koristi na sličan način, ali osim toga, ključna riječ override trebala bi se koristiti za izmjenu svih nadjačanih metoda. Ali u Javi ne postoji eksplicitna ključna riječ Virtual. Sve nestatičke metode smatraju se virtualnima. Virtualne funkcije bez tijela nazivaju se čiste virtualne funkcije. U Javi i C, apstraktne metode su zapravo čiste virtualne.

Razlika između virtualnog i apstraktnog

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

Preporučeni: