Pověz mi o pravidlech přetížení metod.
sobes.tech AI
Odpověď od AI
Metodové přetížení (Method Overloading) v objektově orientovaném programování umožňuje definovat několik metod ve stejné třídě se stejným názvem, ale s různými signaturami.
Hlavní pravidla pro přetížení metod:
-
Rozdíl v signaturách: Signatura metody zahrnuje název metody a seznam typů jejích parametrů ve správném pořadí. Aby byly metody považovány za přetížené, jejich signatury se musí lišit.
// Příklady odlišných signatur void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Odlišné pořadí parametrů -
Název metody musí být stejný: Přetížené metody musí mít stejný název.
// Správný příklad přetížení class Example { void process(int a) { } void process(double b) { } } -
Typ návratu není součástí signatury: Změna pouze typu návratu nezpůsobí přetížení metod. Kompilátor nemůže rozlišit, kterou metodu volat, pokud jsou signatury parametrů stejné.
// Není přetížení - chyba kompilátoru int calculate() { return 1; } String calculate() { return "error"; } -
Modifikátory přístupu a specifikátory výjimek neovlivňují přetížení: Podobně jako typ návratu, změna pouze modifikátorů přístupu (
public,private,protected, default) nebo seznamu vyhazovaných výjimek (throws) nevede k přetížení.// Není přetížení - chyba kompilátoru, pokud jsou signatury parametrů stejné public void doSomething() { } private void doSomething() { } -
Pořadí parametrů má význam: Změna pořadí typů parametrů činí signatury odlišnými.
// Je přetížení void setup(int width, int height) { } void setup(int height, String unit) { } // Odlišný druhý parametr void setup(String unit, int size) { } // Odlišný typ a pořadí parametrů -
Počet parametrů má význam: Různý počet parametrů vede k odlišným signaturám.
// Je přetížení void log(String message) { } void log(String message, int level) { }
Proto je klíčovým faktorem pro přetížení metod jedinečnost signatury metody, která je určena jejím názvem a sadou (typy a pořadí) parametrů.