Обязательно ли при создании дочернего класса требуется вызов конструктора его базового класса?

В Java при создании дочернего класса вызов конструктора базового класса обязателен, но он может быть неявным.

Короткий ответ

Что ответить на собеседовании

В Java при создании дочернего класса вызов конструктора базового класса обязателен, но он может быть неявным. Если в конструкторе дочернего класса явно не вызвать конструктор суперкласса через super(), компилятор автоматически вставит вызов без аргументов к конструктору базового класса. Однако если у базового класса нет конструктора без параметров, то вызов конструктора базового класса должен быть сделан явно с нужными аргументами.

Подробный разбор

Ответ с пояснениями

В Java при создании дочернего класса вызов конструктора базового класса обязателен, но он может быть неявным. Если в конструкторе дочернего класса явно не вызвать конструктор суперкласса через super(), компилятор автоматически вставит вызов без аргументов к конструктору базового класса. Однако если у базового класса нет конструктора без параметров, то вызов конструктора базового класса должен быть сделан явно с нужными аргументами.

Пример:

class Base {
    Base(int x) { }
}

class Derived extends Base {
    Derived() {
        super(10); // обязательный вызов конструктора базового класса с параметром
    }
}

Если базовый класс имеет конструктор без параметров, то вызов super() вставится автоматически, и писать его явно необязательно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее