Ответ
Перегрузка методов (method overloading) — это возможность языка определять несколько методов в одной области видимости (например, в одном классе) с одинаковым именем, но разными параметрами (сигнатурами). Нужный метод выбирается компилятором на основе количества, типа и порядка аргументов при вызове.
Ключевые принципы:
- Перегружаемые методы должны отличаться сигнатурой параметров (типы, количество, порядок).
- Возвращаемый тип не учитывается при перегрузке.
- Модификаторы доступа могут быть разными.
- Можно перегружать как обычные методы, так и конструкторы.
Пример на Java:
public class MathUtils {
// Перегрузка по типу параметров
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
// Перегрузка по количеству параметров
public int add(int a, int b, int c) {
return a + b + c;
}
// Перегрузка с varargs
public int sum(int... numbers) {
int total = 0;
for (int num : numbers) {
total += num;
}
return total;
}
}
// Использование:
MathUtils utils = new MathUtils();
System.out.println(utils.add(5, 10)); // Вызовет int-версию
System.out.println(utils.add(5.5, 2.3)); // Вызовет double-версию
System.out.println(utils.sum(1, 2, 3, 4)); // Использует varargs
Практическое применение: Перегрузка улучшает читаемость кода, позволяя использовать одно интуитивно понятное имя метода для схожих операций над разными типами данных.