Ответ
Перегрузка методов — это возможность в рамках одного класса определять несколько методов с одинаковым именем, но разными сигнатурами (типами, количеством или порядком параметров). Компилятор или интерпретатор выбирает нужную версию метода на основе переданных аргументов.
Пример на Java:
public class MathHelper {
// Версия 1: сложение двух целых чисел
public int add(int a, int b) {
return a + b;
}
// Перегрузка: версия для трех целых чисел
public int add(int a, int b, int c) {
return a + b + c;
}
// Перегрузка: версия для чисел с плавающей точкой
public double add(double a, double b) {
return a + b;
}
// Перегрузка: версия с другим порядком типов
public String add(String a, int b) {
return a + b;
}
}
// Использование:
MathHelper helper = new MathHelper();
System.out.println(helper.add(5, 10)); // Вызовет add(int, int) -> 15
System.out.println(helper.add(2.5, 3.7)); // Вызовет add(double, double) -> 6.2
Важные особенности:
- Возвращаемый тип НЕ является частью сигнатуры для перегрузки. Нельзя иметь два метода с одинаковыми параметрами, но разными возвращаемыми типами.
- Перегрузка относится к статическому (раннему) связыванию. Выбор метода происходит на этапе компиляции на основе типов ссылок.
- В языках с динамической типизацией (например, Python) перегрузка в классическом виде не поддерживается, но может быть эмулирована с использованием аргументов по умолчанию или проверки типов внутри метода.