Что такое перегрузка методов в ООП?

«Что такое перегрузка методов в ООП?» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Перегрузка методов (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

Практическое применение: Перегрузка улучшает читаемость кода, позволяя использовать одно интуитивно понятное имя метода для схожих операций над разными типами данных.