Mesélj a metódusok túlterhelésének szabályairól.
sobes.tech MI
Válasz az MI-től
A metódusok túlterhelése (Method Overloading) az objektumorientált programozásban lehetővé teszi több metódus meghatározását ugyanabban a osztályban ugyanazzal a névvel, de különböző aláírásokkal.
A metódus túlterhelésének fő szabályai:
-
Különbség az aláírásokban: Egy metódus aláírása magában foglalja a metódus nevét és a paraméterek típusainak listáját a megfelelő sorrendben. Ahhoz, hogy a metódusokat túlterhelteknek tekintsük, az aláírásaiknak különbözniük kell.
// Különböző aláírások példái void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Paraméterek sorrendje különböző -
A metódus neve ugyanaz kell legyen: A túlterhelt metódusoknak ugyanazzal a névvel kell rendelkezniük.
// Helyes túlterhelési példa class Example { void process(int a) { } void process(double b) { } } -
A visszatérési típus nem része az aláírásnak: Csak a visszatérési típus megváltoztatása nem teszi túlterheltté a metódusokat. A fordító nem tudja megkülönböztetni, melyik metódust kell meghívni, ha az paraméter aláírások azonosak.
// Nem túlterhelés - fordítási hiba int calculate() { return 1; } String calculate() { return "error"; } -
A hozzáférési módosítók és a kivétel specifikátorok nem befolyásolják a túlterhelést: Hasonlóan a visszatérési típushoz, a hozzáférési módosítók (
public,private,protected, default) vagy a dobott kivételek (throws) listájának megváltoztatása nem vezet túlterheléshez.// Nem túlterhelés - fordítási hiba, ha az aláírások megegyeznek public void doSomething() { } private void doSomething() { } -
A paraméterek sorrendje számít: A paraméter típusainak sorrendjének megváltoztatása különböző aláírásokat eredményez.
// Ez túlterhelés void setup(int width, int height) { } void setup(int height, String unit) { } // Második paraméter különböző void setup(String unit, int size) { } // Típus és sorrend különböző -
A paraméterek száma számít: A különböző paraméter számok különböző aláírásokat eredményeznek.
// Ez túlterhelés void log(String message) { } void log(String message, int level) { }
Ezért a metódus túlterhelésének kulcsfontosságú tényezője a metódus aláírásának egyedisége, amelyet a neve és a paraméterek (típusok és sorrend) halmaza határoz meg.