Ključna razlika – Preopterećenje naspram nadjačavanja u Javi
Objektno orijentirano programiranje (OOP) glavna je paradigma u razvoju softvera. To je metodologija dizajniranja programa pomoću klasa i objekata. Klasa je nacrt. Opisuje što objekt treba sadržavati. Definira svojstva ili atribute i metode od kojih bi se objekt trebao sastojati. Prema tome, objekt je instanca klase. Ti objekti komuniciraju s drugim objektima. Jedan od glavnih koncepata OOP-a je polimorfizam. To je sposobnost objekta da se ponaša na više načina. Polimorfizam je kategoriziran u dva odjeljka 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 stvaranja više metoda istog naziva s različitim implementacijama, a nadjačavanje je pružanje implementacije za metodu potklase koja već postoji u superklasi.
Što je preopterećenje u Javi?
Preopterećenje je mogućnost stvaranja više metoda istog naziva s različitim implementacijama. Pogledajte donji Java kod.
Slika 01: Java program koji objašnjava Preopterećenje s različitim brojem argumenata
Prema gornjem programu, klasa A sadrži dvije metode s istim imenom. Prva metoda zbroja ima dva parametra. Druga metoda zbroja ima tri parametra. Kada kreirate objekt tipa A i pozovete sum(2, 3), pozvat će metodu sum s dva parametra koji su sum(int a, int b) i vraća 5. Kada kreirate objekt tipa A i pozovete sum(2, 3, 4), pozvat će drugu metodu zbroja s tri parametra koji je zbroj (int a, int b, int c) i vraća 9.
Naziv metode je isti, ali se broj parametara razlikuje. Može se primijetiti da se isti objekt ponaša različito. Ovaj koncept je poznat kao preopterećenje. Također se naziva statičko vezanje ili polimorfizam vremena kompajliranja.
Također mogu biti preopterećeni različitim vrstama podataka. Pogledajte donji Java kod.
Slika 02: Java program koji objašnjava Preopterećenje s različitim brojem argumenata
Prema gornjem programu, klasa A sastoji se od dvije metode s istim imenom. Metoda sum(int a, int b) prima dvije cjelobrojne vrijednosti. Zbroj (double a double b) prima dvije dvostruke vrijednosti. Kada kreirate objekt tipa A i pozovete sum(2, 3), pozvat će sum(int a, int b) i vratiti vrijednost 5. Kada pozovete sum(3.4, 5.6), pozvati ć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ćujuće.
Što je nadjačavanje u Javi?
U Javi je moguće izgraditi podklase s već postojećim klasama. Umjesto stvaranja 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 podklasa. Kada podklasa pruža implementaciju za metodu, koja je već u superklasi, to je poznato kao nadjačavanje. Pogledajte donji Java program.
Slika 03: Java program za nadjačavanje
Prema gornjem programu, klasa A ima metodu display(). Klasa B se proširuje iz klase A, tako da su svojstva i metode klase A dostupne klasi B. Klasa B ima metodu display() sa specifičnom implementacijom. Kada kreirate objekt tipa A i pozovete metodu prikaza, to će dati izlaz B. Iako klasa A ima metodu prikaza, ona je nadjačana metodom prikaza klase B. Podklasa implementira metodu koja već postoji u superklasi.
Ovaj koncept je vrsta polimorfizma i poznat je kao nadjačavanje. Također se naziva i kasno uvezivanje, dinamičko uvezivanje, polimorfizam vremena izvođenja.
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?
Preopterećenje u odnosu na nadjačavanje u Javi |
|
Preopterećenje u Javi je mogućnost stvaranja više metoda istog naziva s različitim implementacijama. | Nadjačavanje u Javi pruža specifičnu implementaciju u metodi potklase za metodu koja već postoji u superklasi. |
Parametri | |
U preopterećenju, metode imaju isti naziv, ali različit broj parametara ili drugu vrstu parametara. | U nadjačavanju, metode imaju isto ime i parametri moraju biti isti. |
Teme | |
Dolazi do preopterećenja unutar razreda. | Nadjačavanje se događa unutar dvije klase koje imaju odnos nasljeđivanja. |
Sinonimi | |
Preopterećenje se naziva polimorfizam vremena prevođenja. | Nadjačavanje se naziva polimorfizam vremena izvođenja. |
Sažetak – Preopterećenje naspram nadjačavanja u Javi
Polimorfizam je glavni koncept u objektno orijentiranom programiranju. Pruža mogućnost da se objekt ponaša na više načina. To može biti ili preopterećenje ili nadjačavanje. Preopterećenje je polimorfizam vremena kompajliranja, a nadjačavanje je polimorfizam vremena izvođenja. Korisni su u razvoju softverskih aplikacija. Razlika između nadjačavanja i preopterećenja je u tome što je preopterećenje mogućnost stvaranja više metoda istog naziva s različitim implementacijama, a nadjačavanje pruža specifičnu implementaciju u metodi potklase za metodu koja već postoji u nadklasi. U Javi je moguće implementirati i preopterećenje i nadjačavanje.
Preuzmite PDF Overloading vs Overriding in Java
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 preopterećenja i nadjačavanja u Javi