Ključna razlika – nadjačavanje naspram preopterećenja u C
Ključna razlika između nadjačavanja i preopterećenja u C je u tome što se povezivanje poziva nadjačane metode s njezinom definicijom događa tijekom izvođenja, dok se vezanje poziva s preopterećenom metodom na njezinu definiciju događa tijekom kompajliranja.
C je programski jezik opće namjene koji je razvio Microsoft. Glavna prednost jezika C je ta što podržava objektno orijentirano programiranje (OOP). Jedan stup OOP-a je polimorfizam. 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 i preopterećenja metode u C.
Što je nadjačavanje u C?
Postoji još jedan važan koncept u OOP-u a to 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 postojati osnovna klasa i izvedena klasa. Povezivanje poziva nadjačane metode s definicijom događa se tijekom izvođenja. Primjer je sljedeći.
Slika 01: C program s nadjačavanjem
Prema gornjem programu, klasa Shape je osnovna klasa i sadrži metodu prikaza. Klase Pravokutnik i Trokut su izvedene klase. Ove izvedene klase također imaju isti prikaz metode s vlastitim implementacijama.
Prvo se kreira referentna varijabla obj. Pokazuje na objekt Shape. Dakle, izvršit će se metoda prikaza klase Shape. Zatim, referentna varijabla pokazuje na objekt Rectangle. Dakle, izvršit će se metoda prikaza klase Rectangle. Konačno, referentna varijabla pokazuje na objekt Triangle. Dakle, izvršit će se metoda prikaza klase Triangle. Metoda prikaza osnovne klase nadjačana je metodama prikaza izvedenih klasa.
Metoda za pokretanje odlučuje se tijekom izvođenja. Klasa Shape napisana je ključnom riječi 'virtualno'. Klase Rectangle i Triangle napisane su 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.
Što je preopterećenje u C?
U preopterećenju, više metoda ima isti naziv, ali s različitim parametrima. Parametri mogu biti različitih vrsta. Metode također mogu imati različit broj parametara. Preopterećenje metode događa se u istoj klasi. Povezivanje preopterećenih metoda s definicijom događa se tijekom kompajliranja. Pogledajte donji C program.
Slika 02: C program s preopterećenjem
Prema gornjem programu, klasa A ima dvije metode s istim imenom koje se nazivaju zbroj. Imaju različite vrste parametara. U glavnom programu kreira se objekt A. Zbroj (2, 3) će pozvati metodu zbroja s cijelim brojevima. Zbroj (5.1, 7.94) će pozvati metodu zbroja s dvostrukim vrijednostima. Obje metode imaju isto ime i isti broj parametara. Ali vrste parametara su različite. Tražena metoda se poziva prema tome. Do preopterećenja može doći i 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 vrste polimorfizma
Koja je razlika između nadjačavanja i preopterećenja u C?
Nadjačavanje naspram preopterećenja u C |
|
Nadjačavanje u C je pružiti specifičnu implementaciju u metodi izvedene klase za metodu koja već postoji u osnovnoj klasi. | Preopterećenje u C je stvaranje više metoda s istim imenom s različitim implementacijama. |
Parametri | |
U C nadjačavanju, metode imaju isto ime, iste vrste parametara i isti broj parametara. | U C preopterećenju, metode imaju isti naziv, ali različit broj parametara ili drugu vrstu parametara. |
Pojava | |
U C, nadjačavanje se događa unutar osnovne klase i izvedene klase. | U C, preopterećenje se događa unutar iste klase. |
Vrijeme vezanja | |
Vezivanje poziva nadjačane metode na njezinu definiciju događa se tijekom izvođenja. | Vezivanje poziva preopterećene metode na njenu definiciju događa se tijekom kompajliranja. |
Sinonimi | |
Nadjačavanje se naziva polimorfizam vremena izvođenja, dinamički polimorfizam ili kasno vezanje. | Preopterećenje se naziva polimorfizam vremena kompajliranja, statički polimorfizam ili rano vezanje. |
Sažetak – Nadjačavanje naspram preopterećenja u C
Nadjačavanje i preopterećenje dvije su vrste polimorfizma. Razlika između nadjačavanja i preopterećenja u C je u tome što se vezanje poziva nadjačane metode na njezinu definiciju događa tijekom izvođenja, dok se vezanje poziva preopterećene metode na njezinu definiciju događa tijekom vremena kompilacije.