Sobes.tech
Junior

Co lze změnit při přetížení metod v programování?

sobes.tech AI

Odpověď od AI

Při přetížení metod (method overloading) je možné změnit:

  • Počet parametrů: Metody se stejným jménem mohou mít různý počet formálních parametrů.
  • Typy parametrů: Metody se stejným jménem a stejným počtem parametrů se mohou lišit typy těchto parametrů.
  • Pořadí typů parametrů: Pokud mají metody stejný počet parametrů a stejné typy, ale jsou uspořádány v jiném pořadí, je to také považováno za přetížení.

Příklad v jazyce Java:

// Třída s přetíženými metodami
class Calculator {

    // Metoda sčítání dvou celých čísel
    public int add(int a, int b) {
        return a + b;
    }

    // Přetížená metoda: sčítání tří celých čísel
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Přetížená metoda: sčítání dvou desetinných čísel
    public double add(double a, double b) {
        return a + b;
    }

    // Přetížená metoda: sčítání celého a desetinného čísla
    public double add(int a, double b) {
        return a + b;
    }

    // Přetížená metoda: sčítání desetinného a celého čísla
    public double add(double a, int b) {
        return a + b;
    }
}

Co nelze při přetížení změnit:

  • Typ návratové hodnoty: Dvě metody se stejným jménem a stejnou signaturou (počet, typy a pořadí parametrů) se mohou lišit pouze typem návratové hodnoty.
  • Modifikátory přístupu: Modifikátory přístupu (public, private, protected, default) neovlivňují přetížení.
  • Přítomnost nebo absence klíčového slova static: Nelze přetížit statickou metodu tím, že se definuje nestatická metoda se stejnou signaturou, nebo naopak.
  • Seznam výjimek: Seznam výjimek není součástí signatury metody a při přetížení se nezohledňuje.

Porovnání přetížení a přepisování metod:

Vlastnost Přetížení (Overloading) Přepisování (Overriding)
Kde dochází V jedné třídě nebo v hierarchii tříd V odvozené třídě
Název metody Stejný Stejný
Signatura metody Odlišná (počet, typy, pořadí parametrů) Stejná
Typ návratové hodnoty Může být odlišný (ale není to jediný rozdíl) Musí být stejný nebo kovariánský (pro objekty)
Cíl Poskytnout různé varianty jednoho činu pro různé datové typy nebo počet argumentů Změnit chování zděděné metody v odvozené třídě
Vztah mezi metodami Nezávislé metody Vztah "je" (dědičnost)
Polymorfismus Polymorfismus v době kompilace (statický) Polymorfismus v době běhu (dynamický)