"Helló, Amigo! Mesélek neked a módszer túlterheléséről ."

"Őket is túlterhelheted?! Micsoda nap!"

– Sok mindent megtehetsz velük, de ebbe most nem megyünk bele.

"Megegyeztünk."

"A túlterhelés nagyon egyszerű művelet. Valójában nem is metódusokon végzett művelet, bár néha ijesztő néven emlegetik: parametrikus polimorfizmus ."

Emlékeztetni kell arra, hogy egy osztályban minden metódusnak egyedi névvel kell rendelkeznie.

"Igen, tudom."

"Nos, ez nem teljesen igaz. Úgy értem, egyáltalán nem igaz. Egy metódusnak nem kell egyedinek lennie. Aminek egyedinek kell lennie, az a metódus nevének és paramétereinek típusának kombinációja . Ez a kombináció is metódus aláírásként ismert."

Kód Hozzászólások
public void print();
public void print2();
Ez megengedett. A két módszernek egyedi neve van.
public void print();
public void print(int n);
És ez is megengedett. A két módszernek egyedi neve (aláírása) van.
public void print(int n, int n2);
public void print(int n);
A metódusnevek itt továbbra is egyediek.
public int print(int a);
public void print(int n);
De ez nem megengedett. A módszerek nem egyediek, annak ellenére, hogy különböző típusokat adnak át.
public int print(int a, long b);
public long print(long b, int a);
De ez megengedett. A módszer paraméterei egyediek.

– Ezt már láttam valahol.

"Igen. A " System.out.println " beírásakor az IntelliJ IDEA néhány tucat különböző paramétereket használó nyomtatási módszert javasol. A fordító egyszerűen azonosítja, majd meghívja a szükséges metódust az átadott paraméterek típusa alapján.

"Ez nem olyan nehéz. De ez nem polimorfizmus."

– Pontosabban, ez nem a módszer felülbírálása.

Egyébként szeretném leszögezni, hogy a paraméternevek lényegtelenek. Az összeállítás során elvesznek. Ha egy metódus megfelel, csak a neve és a paramétertípusai ismertek.