Sobes.tech
Junior

Čo sa dá zmeniť pri preťažovaní metód v programovaní?

sobes.tech AI

Odpoveď od AI

Pri preťažovaní metód (method overloading) je možné zmeniť:

  • Počet parametrov: Metódy s rovnakým menom môžu mať rôzny počet formálnych parametrov.
  • Typy parametrov: Metódy s rovnakým menom a rovnakým počtom parametrov sa môžu líšiť typmi týchto parametrov.
  • Poradie typov parametrov: Ak majú metódy rovnaký počet parametrov a rovnaké typy, ale sú usporiadané v inom poradí, aj to sa považuje za preťažovanie.

Príklad v jazyku Java:

// Trieda s preťaženými metódami
class Calculator {

    // Metóda sčítania dvoch celých čísel
    public int add(int a, int b) {
        return a + b;
    }

    // Preťažená metóda: sčítanie troch celých čísel
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Preťažená metóda: sčítanie dvoch desatinných čísel
    public double add(double a, double b) {
        return a + b;
    }

    // Preťažená metóda: sčítanie celého a desatinného čísla
    public double add(int a, double b) {
        return a + b;
    }

    // Preťažená metóda: sčítanie desatinného a celého čísla
    public double add(double a, int b) {
        return a + b;
    }
}

Čo nemožno zmeniť pri preťažovaní:

  • Typ návratovej hodnoty: Dve metódy so rovnakým menom a rovnakou signatúrou (počet, typy a poradie parametrov) nemôžu líšiť iba typom návratovej hodnoty.
  • Modifikátory prístupu: Modifikátory prístupu (public, private, protected, default) neovplyvňujú preťažovanie.
  • Prítomnosť alebo absencia kľúčového slova static: Nie je možné preťažiť statickú metódu definovaním nestatickej s rovnakou signatúrou alebo naopak.
  • Zoznam výnimiek: Zoznam výnimiek nie je súčasťou signatúry metódy a pri preťažovaní sa nezohľadňuje.

Porovnanie preťažovania a prepisovania metód:

Vlastnosť Preťažovanie (Overloading) Prepisovanie (Overriding)
Kde sa deje V jednej triede alebo v hierarchii tried V odvodenej triede
Názov metódy Rovnaký Rovnaký
Signatúra metódy Odlišná (počet, typy, poradie parametrov) Rovnaká
Typ návratovej hodnoty Môže byť odlišný (ale nie je to jediná odlišnosť) Musí byť rovnaký alebo kovariantný (pre objekty)
Cieľ Poskytnutie rôznych variantov jednej akcie pre rôzne typy dát alebo počet argumentov Zmena správania zdedeného metódu v odvodenej triede
Väzba medzi metódami Nezávislé metódy Väzba "je" (dedičstvo)
Polymorfizmus Polymorfizmus v štádiu kompilácie (statický) Polymorfizmus v štádiu behu (dynamický)