Что такое перегрузка конструктора в Java?

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

Ответ

Да, конструкторы в Java можно перегружать. Перегрузка конструктора — это создание нескольких конструкторов в одном классе с разными списками параметров (по количеству, типам или порядку). Компилятор выбирает подходящий конструктор на основе переданных аргументов.

Пример перегрузки:

public class Person {
    private String name;
    private int age;

    // Конструктор по умолчанию
    public Person() {
        this.name = "Unknown";
        this.age = 0;
    }

    // Конструктор с одним параметром
    public Person(String name) {
        this.name = name;
        this.age = 0;
    }

    // Конструктор с двумя параметрами
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Ключевые моменты:

  1. Цель перегрузки — предоставить разные способы инициализации объекта.
  2. Конструкторы могут вызывать друг друга через this(...) для избежания дублирования кода.
  3. Если в классе не объявлен ни один конструктор, компилятор автоматически добавляет публичный конструктор по умолчанию без параметров.