Ответ
Перегрузка методов (Method Overloading) — это возможность языка Java определять несколько методов в одном классе с одинаковым именем, но разными параметрами (сигнатурами). Компилятор выбирает нужный метод на основе переданных аргументов.
Критерии перегрузки (должно отличаться):
- Тип параметров.
- Количество параметров.
- Порядок параметров (если типы разные).
Что НЕ является критерием перегрузки:
- Тип возвращаемого значения. Методы, отличающиеся только им, вызовут ошибку компиляции.
- Модификаторы доступа или бросаемые исключения.
Пример:
public class Calculator {
// Перегрузка по количеству параметров
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 void print(String str, int num) {}
public void print(int num, String str) {} // Это другая сигнатура
}
Зачем это нужно? Для создания единого, интуитивно понятного интерфейса для операций, логически схожих, но работающих с разными типами или количеством данных (например, System.out.println()).