6.6.26

Java metode - Preopterećenje metoda

Besplatni Java kurs - 67. deo
Ovo je samo jedan od članaka koji zajedno čine besplatan Java tutorijal.

Java metode u istoj klasi mogu imati isto ime. U tom slučaju, govotimo o preopterećenju metoda (eng. method overloading).

Preopterećenje metoda – kada više metoda deli isto ime

Zamisli da si vlasnik jedne knjižare. Neko dođe i kaže ti: „Daj mi knjigu.” Ne znaš koju. Ali ako kaže: „Daj mi knjigu 'Dina'”, onda znaš, jer možeš da razumeš koju knjigu traže ako ti je poznat naslov. Ako kaže: „Daj mi knjigu čiji je kataloški broje 27”, opet znaš. Ista reč „daj”, ali različite informacije.

Ista priča važi i za Javu. Metode mogu imati isto ime, a različite parametre. To se zove preopterećenje metoda (method overloading). U ovom slučaju imaš dve verzije metode dajKnjigu, obe se zovu isto. Ali jedna metoda dajKnjigu ima int parametar, dok druga ima parametar tipa String.

Kôd bi mogao da izgleda ovako:

class Knjizara {
    void dajKnjigu(String naslov) {
        System.out.println("Izvoli, knjiga sa naslovom: " + naslov);
    }

    void dajKnjigu(int kataloskiBroj)) {
        System.out.println("Izvoli, knjiga sa kataloškim brojem: " + kataloskiBroj);
    }
}

class Rad {
    public static void main(String args[]) {
        Knjizara mojaKnjizara = new Knjizara();
        mojaKnjizara.dajKnjigu("Dina");
        mojaKnjizara.dajKnjigu(27);
    }
}

Šta se ovde dešava, korak po korak:

  1. Napravili smo klasu Knjižara sa dve metode, obe se zovu dajKnjigu
  2. Prva metoda prima String (naslov knjige)
  3. Druga metoda prima int (kataloški broj)
  4. U main metodi pravimo objekat mojaKnjižara
  5. Kada pozovemo dajKnjigu("Dina"), Java razmišlja: „String je prosleđen kao parametar, zovem prvu metodu”
  6. Kada pozovemo dajKnjigu(27), Java razmišlja: „Parametar je tipa int, zovem drugu metodu”

Šta primećuješ?

Kao što vlasnik knjižare razume kupca na osnovu toga kakvu informaciju pruža (naslov ili kataloški broj), tako i Java razume koju metodu da pozove na osnovu tipa parametra koji se prosleđuje.


No comments:

Post a Comment