Gyakorlati alapok II.
A szignatúra és a metódus-túlterhelés
A szignatúra
Lehetőségünk van a Java nyelven belül arra, hogy egy metódusnevet többször is felhasználjunk.
Egy metódust ugyanis nemcsak a neve azonosít be kizárólagosan, hanem egyéb deklarált jellemzői is, főként bemeneti paramétereinek típusa és száma. Egyes szakkönyvek ezt az összetett azonosítási arculatot a metódusok szignatúrájának nevezik.
Rögtön ugorjunk is bele egy jellemző példába!
Adott 4 db muvelet nevű metódus (+ 1 kötelező main()). Láthatóan a 4 db muvelet nevű metódus nevében azonos, azonban bemeneti paramétereikben és kimeneti jellemzőikben különbözőek. Ha a metódushívások paraméterei pontosan vannak megadva (és a következő fejezetben tárgyalt túlterhelés esetén valójában csakis erre kell fokozottan ügyelnünk), akkor ez alapján képes a JVM kiválasztani a megfelelő metódust. Az érthetőség kedvéért készítsünk egy gyors listát a metódusokról:
-
int muvelet(int a, int b, int c) - összeadja az a b c számokat,
-
int muvelet(int a) - hatványozza a számot,
-
double muvelet(double a, double b) - elosztja a számot b számmal,
-
void muvelet() - meghívja a fenti 3 metódust és kiírja végeredményüket.
Mindemellett fontos kihangsúlyozni a következőket:
a szignatúra kiértékelésébe nem tartozik bele a metódus kimeneti típusa!
Például a következő deklaráció esetén (muvelet(int a) azonosak)...
static int muvelet(int a){
return a * a;
}
static int muvelet(int a){
return a + a;
}
...fordítási hibaüzenetet fogunk kapni.
Mivel a szignatúra és a metódus-túlterhelés szorosan összetartozó fogalmak, ugorjunk a következő fejezetbe, mert ott ezt már futtatható Java-kódon keresztül is tanulmányozhatjuk.