Ključna razlika – polimorfizam nasuprot nasljeđivanju u OOP-u
Objektno orijentirano programiranje (OOP) obično se koristi za razvoj softvera. Mnogi programski jezici podržavaju objektno orijentirano programiranje. Objektno orijentirano programiranje je metodologija dizajniranja programa pomoću klasa i objekata. Klasa u OOP-u je nacrt za stvaranje objekta. Klasa ima svojstva i metode. Objekt je instanca klase. OOP sadrži četiri stupa kao što su nasljeđivanje, polimorfizam, apstrakcija i enkapsulacija. 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.
Što je polimorfizam u OOP-u?
Polimorfizam označava više oblika. Jedan objekt može imati višestruka ponašanja. Polimorfizam se može podijeliti u dvije kategorije. Preopterećuju i nadjačavaju.
Preopterećenje
Pogledajte donji program napisan u Javi.
Slika 01: Preopterećenje
Prema gornjem programu kreira se objekt tipa A. Prilikom pozivanja obj.sum(); dat će izlaz koji se odnosi na metodu sum(). Prilikom pozivanja obj.sum(2, 3); dat će izlaz koji se odnosi na sum(int a, int b). Može se uočiti da isti objekt ima različita ponašanja ovisno o situaciji. Kada postoji više metoda s istim imenom, ali s različitim parametrima, to je poznato kao preopterećenje. Također je poznato kao statičko vezanje ili polimorfizam vremena kompajliranja.
Nadjačavanje
Druga vrsta polimorfizma je dominantna. Pogledajte donji program napisan u Javi.
Slika 02: Nadjačavanje
Prema gornjem programu, postoji metoda display() u klasi A. Klasa B se proteže od klase A. Prema tome, svim metodama u klasi A može pristupiti klasa B. To je nasljeđivanje. Koncept nasljeđivanja opisan je kasnije.
Klasa B također ima istu metodu display(). Prilikom stvaranja objekta tipa A i pozivanja metode prikaza, izlaz će dati B. Metoda prikaza klase A nadjačana je metodom prikaza klase B. Dakle, izlaz je B.
Kada postoje metode s istim imenom i istim parametrima, ali u dvije različite klase, a povezane su nasljeđivanjem, to je poznato kao nadjačavanje. Također je poznato kao kasno uvezivanje, dinamičko uvezivanje, polimorfizam vremena izvođenja. Preopterećenje i nadjačavanje nazivaju se polimorfizam. To je glavni koncept u objektno orijentiranom programiranju.
Što je nasljeđivanje u OOP-u?
Pogledajte donji program napisan u Javi.
Slika 03: Primjer nasljeđivanja
Prema gornjem programu, klasa A ima metodu sum(), a klasa B metodu sub().
Metoda sum() klase A može se koristiti u klasi B korištenjem ključne riječi extend. Ponovno korištenje svojstava i metoda u postojećoj klasi za stvaranje nove klase poznato je kao nasljeđivanje. Čak ne postoji metoda sum() u klasi B; nasljeđuje se iz klase A. Nasljeđivanje je korisno za ponovnu upotrebu koda. Starija klasa naziva se bazna klasa, superklasa ili roditeljska klasa. Izvedena klasa naziva se podklasa ili podklasa.
Vrste nasljeđivanja
Postoje razne vrste nasljeđivanja. To su nasljeđivanje na jednoj razini, nasljeđivanje na više razina, višestruko nasljeđivanje, hijerarhijsko nasljeđivanje i hibridno nasljeđivanje.
Jedno nasljeđivanje
U pojedinačnom nasljeđivanju postoji jedna superklasa i jedna podklasa. Ako je klasa A superklasa, a klasa B podklasa, svim svojstvima i metodama klase A može pristupiti klasa B. Postoji samo jedna razina; stoga se naziva nasljeđivanjem na jednoj razini.
Nasljeđivanje na više razina
U višerazinskom nasljeđivanju postoje tri razine klasa. Srednja klasa nasljeđuje super klasu. Podklasa nasljeđuje međuklasu. Ako postoje tri klase kao što su A, B i C i A je super klasa, a B je srednja klasa. Tada B nasljeđuje od A, a C nasljeđuje od B, to je nasljeđivanje na više razina.
Višestruko nasljeđivanje
U višestrukom nasljeđivanju postoji mnogo super klasa i jedna podklasa. Ako postoje tri superklase koje se zovu A, B, C i D je podklasa, tada 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. Sučelja se koriste za implementaciju višestrukog nasljeđivanja u ovim jezicima.
Hijerarhijsko nasljeđivanje
Ako postoje klase koje se nazivaju A kao superklase, a B, C su podklase, te podklase mogu naslijediti svojstva i metode klase A. Ta vrsta nasljeđivanja poznata je kao hijerarhijsko nasljeđivanje.
Hibridno nasljeđivanje
Postoji još jedan poseban tip nasljeđivanja koji je poznat kao hibridno nasljeđivanje. To je kombinacija višerazinskog i višestrukog nasljeđivanja. Ako su A, B, C i D klase i B nasljeđuje od A, a D nasljeđuje i od B i C, tada 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 stvaranje nove klase koristeći svojstva i metode postojeće klase. |
Upotreba | |
Polimorfizam se koristi za objekte koji pozivaju koji oblik metoda u vrijeme kompilacije i vrijeme 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. | Nasljeđivanje se može podijeliti na jednorazinsko, višerazinsko, hijerarhijsko, hibridno i višestruko nasljeđivanje. |
Sažetak – Polimorfizam protiv nasljeđivanja u OOP-u
Polimorfizam i nasljeđivanje glavni su pojmovi u objektno orijentiranom programiranju. Razlika između polimorfizma i nasljeđivanja u OOP-u je u tome što je polimorfizam zajedničko sučelje za više oblika, a nasljeđivanje je stvaranje nove klase korištenjem svojstava i metoda postojeće klase. Oba koncepta naširoko se koriste u razvoju softvera.
Preuzmite PDF Polimorfizam protiv nasljeđivanja u OOP-u
Možete preuzeti PDF verziju ovog članka i koristiti ga za izvanmrežne svrhe prema napomeni o citatu. Ovdje preuzmite PDF verziju Razlika između polimorfizma i nasljeđivanja u OOP