Razlika između nadjačavanja i preopterećenja

Razlika između nadjačavanja i preopterećenja
Razlika između nadjačavanja i preopterećenja

Video: Razlika između nadjačavanja i preopterećenja

Video: Razlika između nadjačavanja i preopterećenja
Video: By, through, or via 2024, Juli
Anonim

Overriding vs Overloading

Nadjačavanje metode i preopterećenje metode su dva koncepta/tehnike/osobine koje se nalaze u nekim programskim jezicima. Oba koncepta dozvoljavaju programeru da obezbedi različite implementacije za metode sa istim imenom. Nadjačavanje metode omogućava programeru da obezbijedi alternativnu implementaciju unutar podklase za metod koji je već definiran unutar njegove super klase. Preopterećenje metoda omogućava programeru da obezbijedi različite implementacije za više metoda sa istim imenom (unutar iste klase).

Šta je preovlađujuće?

Kao što je gore pomenuto, klasa može proširiti super klasu ili roditeljsku klasu, u objektno orijentisanim programskim jezicima. Podređena klasa može imati svoje vlastite metode ili opciono može imati vlastite implementacije metoda koje su već definirane u svojoj roditeljskoj klasi (ili jednoj od njenih velikih roditeljskih klasa). Dakle, kada se ovo drugo dogodi, to se zove nadjačavanje metode. Drugim riječima, ako podređena klasa pruža implementaciju metode s istim potpisom i tipom povratka kao metoda koja je već definirana u jednoj od svojih roditeljskih klasa, kaže se da je ta metoda nadjačana (zamijenjena) implementacijom podređene klase. Dakle, ako postoji zaobiđena metoda u klasi, runtime sistem će morati odlučiti koja implementacija metoda će se koristiti. Ovaj problem se rješava gledanjem tačnog tipa objekta koji se koristi za njegovo pozivanje. Ako se objekt roditeljske klase koristi za pozivanje nadjačane metode, tada se koristi implementacija u nadređenoj klasi. Slično, ako se koristi objekt podređene klase, onda se koristi implementacija podređene klase. Savremeni programski jezici kao što su Java, Eifell, C++ i Python dozvoljavaju zaobilaženje metoda.

Šta je preopterećenje?

Preopterećenje metoda je funkcija koju pružaju neki programski jezici za kreiranje više od jedne metode sa istim imenom, ali sa različitim tipovima ulaza i izlaza. U modernim programskim jezicima kao što su Java, C, C++ i VB. NET, ova funkcija je dostupna. Metodu možete preopteretiti kreiranjem druge metode sa istim imenom, ali s drugačijim potpisom metode ili drugim tipom povrata (ili oboje). Na primjer, ako imate method1(type1 t1) i method1(type2 t2) unutar iste klase, onda su oni preopterećeni. Tada će sistem morati da odluči koji će se izvršiti kada bude pozvan. Ova diferencijacija je napravljena posmatranjem tipa parametra(a) koji su prosleđeni metodi. Ako je argument tipa 1, poziva se prva implementacija, a ako je tipa 2, poziva se druga implementacija.

Koja je razlika između nadjačavanja i preopterećenja?

Iako se zamjena metoda i preopterećenje metoda koriste da bi se obezbijedila metoda sa različitim implementacijama, postoje ključne razlike između ova dva koncepta/tehnike. Prije svega, subjekti nadjačavanja metoda uvijek ostaju unutar različitih klasa, dok subjekti preopterećenja metoda ostaju unutar iste klase. To znači da je nadjačavanje moguće samo u objektno orijentiranim programskim jezicima koji dozvoljavaju nasljeđivanje, dok preopterećenje može biti dostupno i u objektno orijentisanim jezicima. Drugim riječima, poništavate metodu u super klasi, ali preopterećujete metodu unutar svoje klase.

Još jedna razlika je u tome što nadjašnjene metode imaju isto ime metode, potpis metode i tip vraćanja, ali preopterećene metode moraju se razlikovati ili po potpisu ili po tipu povratka (ime bi trebalo biti isto). Da bi se napravila razlika između dvije nadjačane metode, koristi se tačan tip objekta koji se koristi za pozivanje id-a korištenih metoda, dok se za razlikovanje između dvije preopterećene metode koriste tipovi parametara. Još jedna ključna razlika je u tome što se preopterećenje rješava u vrijeme kompajliranja, dok se nadjačavanje rješava u vrijeme izvođenja.

Preporučuje se: