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: Šta zapravo znamo o autizmu? | Marija Svilar | TEDxNoviSad 2024, Svibanj
Anonim

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 apstraktne ključne riječi pružaju osjećaj djelomične implementacije entitetima kojima se pridružuje.

Sažetak

Uobičajeno se apstraktne klase, poznate i kao Abstract Basic Classes (ABC), ne mogu instancirati (instanca te klase ne može se stvoriti). Dakle, klase sažetak ima smisla imati samo ako programski jezik podržava nasljeđivanje (mogućnost stvaranja potklasa od proširenja klase). Apstraktne klase obično predstavljaju apstraktni koncept ili entitet s djelomičnom ili nikakvom implementacijom. Stoga, apstraktni razredi djeluju kao roditeljski razredi iz kojih se izvode podređeni razredi, tako da će podređeni razred dijeliti nepotpune značajke nadređenog razreda i funkcionalnost se može dodati kako bi ih dovršila. Apstraktni tečajevi mogu sadržavati apstraktne metode. Podrazredi koji proširuju apstraktnu klasu mogu primijeniti ove (naslijeđene) apstraktne metode. Ako podređena klasa provodi sve takve Sažetak metode, to je konkretna klasa. Ali ako se ne dogodi,razred djeteta također postaje sažetak. Sve ovo znači da, kad programer nominira klasu kao Sažetak, ona kaže da će klasa biti nepotpuna i da će imati elemente koje treba dovršiti nasljeđivanjem potklasa. 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 #, klase i metode sažetka se deklariraju pomoću ključne riječi Abstract. 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 #, klase i metode sažetka se deklariraju pomoću ključne riječi Abstract. 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 Java i C # apstraktne klase i metode deklariraju se pomoću ključne riječi Abstract.

Virtualan

Virtualne metode / funkcije pružaju mogućnost da po želji nadjačaju svoje ponašanje nasljeđivanjem klase (pomoću funkcije s istim potpisom). Koncept virtualne funkcije važan je u sljedećem scenariju. Pretpostavimo da klasu izvodi podređena klasa, a kad god se koristi objekt izvedene klase, ona se može odnositi na objekt osnovne klase ili izvedene klase. Ali, ponašanje poziva metode može biti dvosmisleno ako se prevladaju metode osnovne klase. Dakle, da bi se riješila ta nejasnoća, 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 ++-u se virtualna ključna riječ koristi upravo u tu svrhu. U C #, virtualna se ključna riječ koristi na sličan način, ali uz to,nadjačavanje ključne riječi treba koristiti za izmjenu svih nadjačanih metoda. Ali u Javi ne postoji eksplicitna ključna riječ Virtual. Sve se nestatičke metode smatraju virtualnim. Virtualne funkcije bez tijela nazivaju se čistim virtualnim funkcijama. U Javi i C #, apstraktne metode zapravo su čisti virtualni.

Razlika između virtualnog i apstraktnog

Iako su Sažetak i Virtual dvije ključne riječi / koncepti koji značenju nepotpune provedbe pripadaju povezanim entitetima, oni imaju svoje razlike. Apstraktne metode (koje se moraju definirati unutar klasa Sažetak) uopće nemaju implementaciju, dok virtualne metode mogu imati implementaciju. Ako se apstraktne metode proširuju konkretnom klasom, sve naslijeđene apstraktne metode moraju se implementirati, dok naslijeđene virtualne metode mogu ili ne moraju biti nadjačane.

Preporučeno: