Opowiedz o zasadach przeciążania metod.
sobes.tech AI
Odpowiedź od AI
Przeciążanie metod (Method Overloading) w programowaniu obiektowym pozwala na zdefiniowanie kilku metod w jednej klasie o tej samej nazwie, ale z różnymi sygnaturami.
Główne zasady przeciążania metod:
-
Różnice w sygnaturach: Sygnatura metody obejmuje nazwę metody i listę typów jej parametrów w odpowiednim porządku. Aby metody były uznane za przeciążone, ich sygnatury muszą się różnić.
// Przykłady różnych sygnatur void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Różny kolejność parametrów -
Nazwa metody musi być taka sama: Metody przeciążone muszą mieć tę samą nazwę.
// Poprawny przykład przeciążenia class Example { void process(int a) { } void process(double b) { } } -
Typ zwracany nie jest częścią sygnatury: Zmiana tylko typu zwracanego nie powoduje przeciążenia metod. Kompilator nie będzie mógł rozróżnić, którą metodę wywołać, jeśli sygnatury parametrów są takie same.
// Nie jest przeciążeniem - błąd kompilacji int calculate() { return 1; } String calculate() { return "error"; } -
Modyfikatory dostępu i specyfikatory wyjątków nie wpływają na przeciążenie: Podobnie jak typ zwracany, zmiana tylko modyfikatorów dostępu (
public,private,protected, domyślny) lub listy rzucanych wyjątków (throws) nie prowadzi do przeciążenia.// Nie jest przeciążeniem - błąd kompilacji, jeśli sygnatury parametrów są takie same public void doSomething() { } private void doSomething() { } -
Kolejność parametrów ma znaczenie: Zmiana kolejności typów parametrów powoduje różne sygnatury.
// Jest przeciążeniem void setup(int width, int height) { } void setup(int height, String unit) { } // Różni się drugim parametrem void setup(String unit, int size) { } // Różni się typem i kolejnością parametrów -
Liczba parametrów ma znaczenie: Różne liczby parametrów prowadzą do różnych sygnatur.
// Jest przeciążeniem void log(String message) { } void log(String message, int level) { }
Dlatego kluczowym czynnikiem dla przeciążania metod jest unikalność sygnatury metody, która jest określana przez jej nazwę i zestaw (typy i kolejność) parametrów.