Ključna razlika – preopterećenje naspram nadjačavanja u Javi
Objektno orijentirano programiranje (OOP) je glavna paradigma u razvoju softvera. To je metodologija za dizajniranje programa koristeći klase i objekte. Klasa je nacrt. Opisuje šta treba sadržavati u objektu. Definira svojstva ili atribute i metode od kojih bi se objekt trebao sastojati. Dakle, objekat je instanca klase. Ovi objekti komuniciraju s drugim objektima. Jedan od glavnih koncepta OOP-a je polimorfizam. To je sposobnost objekta da se ponaša na više načina. Polimorfizam je kategoriziran u dva dijela koji su preopterećeni i nadjačavajući. Ovaj članak govori o razlici između ova dva u Javi. Ključna razlika između preopterećenja i nadjačavanja u Javi je u tome što je preopterećenje mogućnost kreiranja više metoda istog imena sa različitim implementacijama, a nadjačavanje je obezbjeđivanje implementacije za metodu podklase koja već postoji u superklasi..
Šta je preopterećenje u Javi?
Preopterećenje je mogućnost kreiranja više metoda istog imena sa različitim implementacijama. Pogledajte donji Java kod.
Slika 01: Java program koji objašnjava preopterećenje različitim brojem argumenata
Prema gore navedenom programu, klasa A sadrži dva metoda sa istim imenom. Metoda prve sume ima dva parametra. Drugi metod sume ima tri parametra. Prilikom kreiranja objekta tipa A i pozivanja sum(2, 3), on će pozvati metodu sum sa dva parametra koji su sum(int a, int b) i vraća 5. Prilikom kreiranja objekta tipa A i pozivanja sum(2, 3, 4), pozvaće drugu metodu suma sa tri parametra, a to je sum(int a, int b, int c) i vraća 9.
Naziv metode je isti, ali broj parametara se razlikuje. Može se primijetiti da se isti objekat ponaša drugačije. Ovaj koncept je poznat kao preopterećenje. Takođe se naziva i statičko vezivanje ili polimorfizam vremena kompajliranja.
Također može biti preopterećen različitim tipovima podataka. Pogledajte donji Java kod.
Slika 02: Java program koji objašnjava preopterećenje različitim brojem argumenata
Prema gore navedenom programu, klasa A se sastoji od dva metoda sa istim imenom. Metoda sum(int a, int b) prima dvije cjelobrojne vrijednosti. Zbir (double a double b) prima dvije dvostruke vrijednosti. Prilikom kreiranja objekta tipa A i pozivanja sum(2, 3), on će pozvati sum(int a, int b) i vratiti vrijednost 5. Kada poziva sum(3.4, 5.6), pozvaće sum(double a double b) i vrati vrijednost 9.0. U ovom primjeru metode imaju isto ime, ali različite vrste varijabli. Ovo je također preopterećenje.
Šta je nadjačavanje u Javi?
U Javi je moguće izgraditi podklase sa već postojećim klasama. Umjesto kreiranja nove klase od početka, moguće je koristiti svojstva i metode već postojeće klase. Postojeća klasa je nadklasa, a izvedena klasa je potklasa. Kada potklasa pruža implementaciju za metodu, koja je već u superklasi, poznata je kao nadjačavanje. Pogledajte donji Java program.
Slika 03: Java program za nadjačavanje
Prema gore navedenom programu, klasa A ima metod display(). Klasa B se proteže od klase A, tako da su svojstva i metode klase A dostupni klasi B. Klasa B ima metod display() sa specifičnom implementacijom. Prilikom kreiranja objekta tipa A i pozivanja metode prikaza, on će dati izlaz B. Iako klasa A ima metodu prikaza, ona je nadjačana kao metoda prikaza klase B. Podklasa implementira metodu koja već postoji u superklasi.
Ovaj koncept je vrsta polimorfizma i poznat kao nadjačavanje. Naziva se i kao kasno uvezivanje, dinamičko povezivanje, polimorfizam vremena izvršavanja.
Koje su sličnosti između preopterećenja i nadjačavanja u Javi?
- Obje su vrste polimorfizma.
- U preopterećenju i nadjačavanju, metode imaju isto ime.
Koja je razlika između preopterećenja i nadjačavanja u Javi?
Overloading vs Overriding in Java |
|
Preopterećenje u Javi je mogućnost kreiranja više metoda istog imena sa različitim implementacijama. | Preglasavanje u Javi pruža specifičnu implementaciju u metodu podklase za metodu koja već postoji u superklasi. |
Parametri | |
U slučaju preopterećenja, metode imaju isti naziv, ali različit broj parametara ili različite vrste parametara. | U poništavanju, metode imaju isti naziv i parametri moraju biti isti. |
Teme | |
Dolazi do preopterećenja unutar klase. | Nadjačavanje se dešava unutar dvije klase koje imaju odnos nasljeđivanja. |
Sinonimi | |
Preopterećenje se naziva kompajlirani vremenski polimorfizam. | Nadjačavanje se naziva polimorfizam vremena izvođenja. |
Sažetak – preopterećenje vs nadjačavanje u Javi
Polimorfizam je glavni koncept u objektno orijentiranom programiranju. Pruža mogućnost da se objekt ponaša na više načina. Ovo može biti ili preopterećenje ili nadjačavanje. Preopterećenje je polimorfizam u vrijeme kompajliranja, a nadjačavanje je polimorfizam vremena izvođenja. Oni su korisni u razvoju softverskih aplikacija. Razlika između nadjačavanja i preopterećenja je u tome što je preopterećenje mogućnost kreiranja više metoda istog imena sa različitim implementacijama, a nadjačavanje pruža specifičnu implementaciju u metodu podklase za metodu koja već postoji u superklasi. Moguće je implementirati i preopterećenje i nadjačavanje u Javi.
Preuzmite PDF Overloading vs Overriding u Javi
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 preopterećenja i nadjačavanja u Javi