Ključna razlika – polimorfizam u odnosu na nasljeđivanje u OOP-u
Objektno orijentirano programiranje (OOP) se obično koristi za razvoj softvera. Mnogi programski jezici podržavaju objektno orijentirano programiranje. Objektno orijentirano programiranje je metodologija za dizajniranje programa korištenjem klasa i objekata. Klasa u OOP-u je nacrt za kreiranje objekta. Klasa ima svojstva i metode. Objekt je instanca klase. OOP sadrži četiri stuba kao što su nasljeđivanje, polimorfizam, apstrakcija i inkapsulacija. Ovaj članak govori o razlici između polimorfizma i nasljeđivanja u OOP-u. Ključna razlika između polimorfizma i nasljeđivanja u OOP-u je u tome što je polimorfizam sposobnost objekta da se ponaša na više načina, a nasljeđivanje je stvaranje nove klase koristeći svojstva i metode postojeće klase.
Šta je polimorfizam u OOP-u?
Polimorfizam označava više oblika. Jedan objekat može imati višestruka ponašanja. Polimorfizam se može podijeliti u dvije kategorije. Oni su preopterećeni i nadjačavaju.
Preopterećenje
Pogledajte donji program napisan u Javi.
Slika 01: Preopterećenje
Prema gore navedenom programu kreira se objekat tipa A. Prilikom pozivanja obj.sum(); to će dati izlaz povezan sa metodom sum(). Prilikom pozivanja obj.sum(2, 3); to će dati izlaz povezan sa sum(int a, int b). Može se primijetiti da isti objekt ima različita ponašanja ovisno o situaciji. Kada postoji više metoda sa istim imenom, ali sa različitim parametrima, to je poznato kao preopterećenje. Također je poznat kao polimorfizam statičkog vezivanja ili vremena kompajliranja.
Nadjačavanje
Drugi tip polimorfizma je nadmoćan. Pogledajte program ispod napisan na Javi.
Slika 02: Nadjačavanje
Prema gore navedenom programu, postoji metoda display() u klasi A. Klasa B se proteže od klase A. Prema tome, svim metodama u klasi A može se pristupiti prema klasi B. To je nasljeđivanje. Koncept nasljeđivanja je dalje opisan kasnije.
Klasa B također ima isti metod display(). Prilikom kreiranja objekta tipa A i pozivanja metode prikaza, izlaz će dati B. Metoda prikaza klase A je nadjačana metodom prikaza klase B. Dakle, izlaz je B.
Kada postoje metode sa istim imenom i istim parametrima, ali u dvije različite klase, a povezane su nasljeđivanjem, to je poznato kao nadjačavanje. Poznato je i kao kasno povezivanje, dinamičko vezivanje, polimorfizam vremena izvršavanja. Preopterećenje i nadjačavanje nazivaju se polimorfizmom. To je glavni koncept u objektno orijentiranom programiranju.
Šta je nasljeđivanje u OOP-u?
Pogledajte donji program napisan u Javi.
Slika 03: Primjer nasljeđivanja
Prema gore navedenom programu, klasa A ima metodu sum(), a klasa B ima metodu sub().
Metoda sum() klase A može se koristiti u klasi B pomoću ključne riječi extend. Ponovno korištenje svojstava i metoda u postojećoj klasi za kreiranje nove klase poznato je kao nasljeđivanje. Čak i ne postoji metoda sum() u klasi B; naslijeđen je od klase A. Nasljeđivanje je korisno za ponovnu upotrebu koda. Starija klasa se naziva bazna klasa, nadklasa ili roditeljska klasa. Izvedena klasa se zove potklasa ili podređena klasa.
Vrste nasljeđa
Postoje različite vrste nasljeđa. To su nasljeđivanje na jednom nivou, nasljeđivanje na više nivoa, višestruko nasljeđivanje, hijerarhijsko nasljeđivanje i hibridno nasljeđivanje.
Pojedinačno nasljeđe
U pojedinačnom nasljeđivanju, postoji jedna super klasa i jedna podklasa. Ako je klasa A super klasa, a klasa B podklasa, svim svojstvima i metodama klase A može pristupiti klasa B. Postoji samo jedan nivo; stoga se to naziva nasljeđivanjem na jednom nivou.
Nasljedstvo na više nivoa
U nasljeđivanju na više nivoa postoje tri nivoa klasa. Srednja klasa nasljeđuje od super klase. Podklasa nasljeđuje od srednje klase. Ako postoje tri klase kao A, B i C i A je super klasa, a B je srednja klasa. Tada B nasljeđuje od A i C nasljeđuje od B, to je nasljeđivanje na više nivoa.
Višestruko nasljeđe
U višestrukom nasljeđivanju, postoji mnogo super klasa i jedna podklasa. Ako postoje tri super klase koje se zovu A, B, C i D je podklasa, onda klasa D može naslijediti od A, B i C. Višestruko nasljeđivanje je podržano u programskom jeziku C++. Nije podržan u programskim jezicima kao što su Java ili C. Interfejsi se koriste za implementaciju višestrukog nasljeđivanja na ovim jezicima.
Hijerarhijsko nasljeđe
Ako postoje klase koje se zovu A kao super klase i B, C su podklase, te podklase mogu naslijediti svojstva i metode klase A. Ta vrsta nasljeđivanja je poznata kao Hijerarhijsko nasljeđivanje.
Hibridno nasljeđe
Postoji još jedan poseban tip nasljeđivanja koji je poznat kao hibridno nasljeđivanje. To je kombinacija višeslojnog i višestrukog nasljeđivanja. Ako su A, B, C i D klase i B nasljeđuje od A i D nasljeđuje i od B i C, onda je to hibridno nasljeđivanje.
Koje su sličnosti između polimorfizma i nasljeđivanja u OOP-u?
Oba su koncepti objektno orijentiranog programiranja
Koja je razlika između polimorfizma i nasljeđivanja u OOP-u?
Polimorfizam protiv nasljeđivanja u OOP-u |
|
Polimorfizam je sposobnost objekta da se ponaša na više načina. | Nasljeđivanje je kreiranje nove klase koristeći svojstva i metode postojeće klase. |
Upotreba | |
Polimorfizam se koristi za objekte da pozovu koji oblik metoda u vrijeme kompajliranja i izvođenja. | Nasljeđivanje se koristi za ponovnu upotrebu koda. |
Implementacija | |
Polimorfizam je implementiran u metode. | Nasljeđivanje je implementirano u klasama. |
Kategorije | |
Polimorfizam se može podijeliti na preopterećenje i nadjačavanje. | Naslijeđe se može podijeliti na jednostepeno, višestepeno, hijerarhijsko, hibridno i višestruko nasljeđivanje. |
Sažetak – Polimorfizam protiv nasljeđivanja u OOP-u
Polimorfizam i nasljeđivanje su glavni koncepti u objektno orijentiranom programiranju. Razlika između polimorfizma i nasljeđivanja u OOP-u je u tome što je polimorfizam uobičajeni interfejs za više oblika, a nasljeđivanje je stvaranje nove klase koristeći svojstva i metode postojeće klase. Oba koncepta se široko koriste u razvoju softvera.
Preuzmite PDF polimorfizam vs nasljeđivanje u OOP-u
Možete preuzeti PDF verziju ovog članka i koristiti ga za vanmrežne svrhe prema napomeni o citatu. Molimo preuzmite PDF verziju ovdje Razlika između polimorfizma i nasljeđivanja u OOP