Ključna razlika – nadjačavanje naspram preopterećenja u C
Ključna razlika između nadjačavanja i preopterećenja u C-u je u tome što se vezivanje zaobilaznog poziva metode za njegovu definiciju dešava u vrijeme izvođenja, dok se vezivanje preopterećenog poziva metode za njegovu definiciju događa u vrijeme kompajliranja.
C je programski jezik opšte namene koji je razvio Microsoft. Glavna prednost C je ta što podržava objektno orijentirano programiranje (OOP). Jedan od stubova OOP-a je polimorfizam. To daje objektu višestruka ponašanja. Postoje dvije vrste polimorfizma poznate kao nadjačavanje i preopterećenje. Ovaj članak govori o razlici između nadjačavanja metoda i preopterećenja u C.
Šta je prevashodno u C?
Postoji još jedan važan koncept u OOP-u je nasljeđivanje. To je korištenje atributa i metoda već postojeće klase. Poboljšava ponovnu upotrebu koda. Već postojeća klasa je osnovna klasa, a nova klasa je poznata kao izvedena klasa. U nadjačavanju polimorfizma, treba da postoje osnovna klasa i izvedena klasa. Vezivanje nadjašnjenog poziva metode za definiciju se dešava u vrijeme izvođenja. Primjer je sljedeći.
Slika 01: C program sa nadjačavanjem
Prema gore navedenom programu, klasa Shape je osnovna klasa i sadrži metod prikaza. Klasa Pravougaonik i Trougao su izvedene klase. Ove izvedene klase takođe imaju isti prikaz metoda sa sopstvenim implementacijama.
Prvo se kreira referentna varijabla obj. Pokazuje na objekat Shape. Dakle, način prikaza klase Shape će se izvršiti. Zatim, referentna varijabla pokazuje na objekt Rectangle. Dakle, način prikaza klase Rectangle će se izvršiti. Konačno, referentna varijabla pokazuje na objekt Triangle. Dakle, način prikaza klase Triangle će se izvršiti. Metoda prikaza osnovne klase je nadjačana metodama prikaza izvedenih klasa.
Način pokretanja se odlučuje u toku rada. Klasa Shape je napisana ključnom riječi 'virtual'. Klase Rectangle i Triangle su napisane ključnom riječi 'override'. Ako se ove ključne riječi ne koriste, izlaz će ispisati sadržaj metode prikaza klase Shape za sve.
Šta je preopterećenje u C?
U preopterećenju, više metoda ima isto ime, ali sa različitim parametrima. Parametri mogu biti različitih tipova. Metode također mogu imati različit broj parametara. Preopterećenje metoda se dešava u istoj klasi. Vezivanje preopterećenih metoda za definiciju događa se u vrijeme kompajliranja. Pogledajte donji C program.
Slika 02: C program sa preopterećenjem
Prema gore navedenom programu, klasa A ima dvije metode sa istim imenom koje se nazivaju sum. Imaju različite vrste parametara. U glavnom programu kreira se objekat A. Sum (2, 3) će pozvati metodu sum sa cijelim brojevima. Zbir (5.1, 7.94) će pozvati metodu suma sa dvostrukim vrijednostima. Obje metode imaju isto ime i isti broj parametara. Ali tipovi parametara su različiti. U skladu s tim se poziva tražena metoda. Preopterećenje se također može dogoditi ako su imena metoda i tipovi parametara isti, ali je broj parametara različit.
Koja je sličnost između nadjačavanja i preopterećenja u C?
I nadjačavanje i preopterećenje u C su tipovi polimorfizma
Koja je razlika između nadjačavanja i preopterećenja u C?
Overriding vs Overloading in C |
|
Preglasavanje u C je da se obezbedi specifična implementacija u metodi izvedene klase za metod koji već postoji u osnovnoj klasi. | Preopterećenje u C je stvaranje više metoda sa istim imenom sa različitim implementacijama. |
Parametri | |
U C nadjačavanju, metode imaju isti naziv, iste tipove parametara i isti broj parametara. | U C preopterećenju, metode imaju isti naziv, ali različit broj parametara ili različite vrste parametara. |
Pojava | |
U C, nadjačavanje se dešava unutar osnovne i izvedene klase. | U C, preopterećenje se dešava unutar iste klase. |
Vrijeme vezivanja | |
Vezivanje zaobilaznog poziva metode za njegovu definiciju se dešava u toku izvođenja. | Vezivanje preopterećenog poziva metode za njegovu definiciju se dešava u vrijeme kompajliranja. |
Sinonimi | |
Nadjačavanje se naziva polimorfizam vremena izvođenja, dinamički polimorfizam ili kasno uvezivanje. | Preopterećenje se naziva polimorfizam vremena kompajliranja, statički polimorfizam ili rano povezivanje. |
Sažetak – nadjačavanje vs preopterećenje u C
Overriding i Overloading su dvije vrste polimorfizma. Razlika između nadjačavanja i preopterećenja u C-u je u tome što se vezivanje zaobilaznog poziva metode za njegovu definiciju dešava u vrijeme izvođenja, dok se vezivanje preopterećenog poziva metode za njegovu definiciju događa u vrijeme kompajliranja.