Sobes.tech
Junior

Mit lehet módosítani a módszerek túlterhelésekor a programozásban?

sobes.tech MI

Válasz az MI-től

A metódus túlterhelésekor (method overloading) a következőket lehet módosítani:

  • Paraméterek száma: Azonos névvel rendelkező metódusok különböző számú formális paraméterrel rendelkezhetnek.
  • Paraméterek típusai: Azonos névvel és paraméterszámmal rendelkező metódusok eltérhetnek a paraméterek típusában.
  • Paraméterek típusainak sorrendje: Ha a metódusok ugyanannyi paraméterrel és ugyanazokkal a típusokkal rendelkeznek, de azok különböző sorrendben vannak, ez szintén túlterhelésnek számít.

Java példák:

// Túlterhelt metódusokat tartalmazó osztály
class Calculator {

    // Két egész szám összeadása
    public int add(int a, int b) {
        return a + b;
    }

    // Túlterhelt metódus: három egész szám összeadása
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Túlterhelt metódus: két lebegőpontos szám összeadása
    public double add(double a, double b) {
        return a + b;
    }

    // Túlterhelt metódus: egész és lebegőpontos szám összeadása
    public double add(int a, double b) {
        return a + b;
    }

    // Túlterhelt metódus: lebegőpontos és egész szám összeadása
    public double add(double a, int b) {
        return a + b;
    }
}

Mit nem lehet módosítani túlterheléskor:

  • Visszatérési típus: Két ugyanolyan névvel és aláírással (paraméterek száma, típusai, sorrendje) rendelkező metódus csak a visszatérési típusban különbözhet.
  • Hozzáférési módosítók: A hozzáférési módosítók (public, private, protected, default) nem befolyásolják a túlterhelést.
  • static kulcsszó jelenléte vagy hiánya: Nem lehet túlterhelni egy statikus metódust egy nem statikus metódussal, vagy fordítva.
  • Kivételek listája: A kivételek listája nem része a metódus aláírásának, és nem befolyásolja a túlterhelést.

A túlterhelés és felülírás összehasonlítása:

Jellemző Túlterhelés (Overloading) Felülírás (Overriding)
Hol történik Egy osztályban vagy osztályhierarchiában Egy alosztályban
Metódus neve Ugyanaz Ugyanaz
Metódus aláírása Különböző (paraméterek száma, típusai, sorrendje) Ugyanaz
Visszatérési típus Lehet eltérő (de nem az egyetlen különbség) Ugyanaz vagy kovariáns (objektumok esetén)
Célja Különböző típusok vagy argumentumok számára több lehetőség biztosítása Örökölt metódus viselkedésének módosítása a leszármazott osztályban
Metódusok közötti kapcsolat Független metódusok "Létezik" kapcsolat (öröklődés)
Polimorfizmus Fordítási időben (statikus) polimorfizmus Futási időben (dinamikus) polimorfizmus