Povedz mi o pravidlách preťažovania metód.
sobes.tech AI
Odpoveď od AI
Preťažovanie metód (Method Overloading) v objektovo orientovanom programovaní umožňuje definovať niekoľko metód v jednej triede s rovnakým menom, ale s rôznymi signatúrami.
Hlavné pravidlá pre preťažovanie metód:
-
Rozdiely v signatúrach: Signatúra metódy zahŕňa názov metódy a zoznam typov jej parametrov v príslušnom poradí. Aby sa metódy považovali za preťažené, ich signatúry musia byť odlišné.
// Príklady odlišných signatúr void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Odlišný poradím parametrov -
Názov metódy musí byť rovnaký: Preťažené metódy musia mať rovnaký názov.
// Správny príklad preťaženia class Example { void process(int a) { } void process(double b) { } } -
Typ návratovej hodnoty nie je súčasťou signatúry: Zmena len typu návratovej hodnoty nezabezpečuje, že metódy sú preťažené. Kompilátor nebude vedieť rozlíšiť, ktorú metódu volať, ak majú rovnaké signatúry parametrov.
// Nie je preťaženie - chyba kompilácie int calculate() { return 1; } String calculate() { return "error"; } -
Modifikátory prístupu a špecifikátory výnimiek neovplyvňujú preťažovanie: Podobne ako typ návratovej hodnoty, zmena len modifikátorov prístupu (
public,private,protected, default) alebo zoznamu vyhadzovaných výnimiek (throws) nevedie k preťažovaniu.// Nie je preťaženie - chyba kompilácie, ak sú signatúry parametrov rovnaké public void doSomething() { } private void doSomething() { } -
Poradie parametrov má význam: Zmena poradia typov parametrov robí signatúry odlišnými.
// Je preťaženie void setup(int width, int height) { } void setup(int height, String unit) { } // Odlišný druhým parametrom void setup(String unit, int size) { } // Odlišný typom a poradím parametrov -
Počet parametrov má význam: Rôzny počet parametrov vedie k odlišným signatúram.
// Je preťaženie void log(String message) { } void log(String message, int level) { }
Preto je kľúčovým faktorom pre preťažovanie jedinečnosť signatúry metódy, ktorá je definovaná jeho menom a súborom (typmi a poradím) parametrov.