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ý) |