Deo zbornika Učimo Javu
Preopterećenje metoda u Javi
Ako klasa ima više metoda istog imena ali različitih parametara, to je poznato kao preopterećenje (overloading) metoda.
Java čak dozvoljava da varijable i metode imaju ista imena, sve dok se razlikuju po listi argumenata i povratnom tipu. Npr. klasi Koordinata
, koja sadrži attribute x
i y
, možemo dodati i istoimene pristupne metode bez opasnosti od dvoznačnosti.
Sada možemo umjesto standardnog setera setX(value)
koristiti x(value)
, a umjesto getera getX()
samo x()
:
class Koordinata {
double x;
double y;
void x(double value) {
this.x = value;
}
void y(double value) {
this.y = value;
}
double x() {
return this.x;
}
double y() {
return this.y;
}
}
class Stampac {
public static void main(String[] args) {
Koordinata ishodiste;
ishodiste = new Koordinata();
ishodiste.x(0.0);
ishodiste.y(0.0);
System.out.println("(" + ishodiste.x() + "," + ishodiste.y() + ")");
}
}
Da isprobate kod sebe, sačuvajte klase u zasebnim fajlovima i u konzoli ukucajte:
% javac Koordinata.java
% javac Stampac.java
% java Stampac
(0.0,0.0)
Što je preopterećenje (overloading)?
Izraz overloading označava situaciju kad se ista metoda ili operator koristi na više različitih tipova podataka. Na primjer, znakom +
se označava zbrajanje cijelih brojeva, kao i konkatenacija struna, pri čemu se on na različitim tipovima podataka ponaša različito. Zato kažemo da je znak +
preopterećen (overloaded).
Metode također mogu biti preopterećene. Na primjer, System.out.println()
može ispisivati podatke tipa double
, float
, int
, long
, String
i tako dalje, a koristimo je na potpuno isti način na svim tim tipovima podataka.
Normalno jedan identifikator referencira jednu metodu. Međutim kad jedan identifikator označava više od jedne metode, to je overloading.
Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.