Перегрузка конструктора означает несколько конструкторов с разными списками параметров. Общую инициализацию удобно сосредоточить в одном и делегировать ему через this(...).
Создание нескольких конструкторов в классе
Перегрузка конструктора означает несколько конструкторов с разными списками параметров. Общую инициализацию удобно сосредоточить в одном и делегировать ему через this(...).
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В проекте присутствует класс A, содержащий поле id. У класса уже определён конструктор без параметров A(). Требуется реализовать перегрузку конструктора, добавив дополнительные варианты инициализации.
Ответ
Перегрузка конструктора означает несколько конструкторов с разными списками параметров. Общую инициализацию удобно сосредоточить в одном и делегировать ему через this(...).
class A {
private final long id;
public A() { this(0); }
public A(long id) { this.id = id; }
public A(A other) { this(other.id); }
public long getId() { return id; }
}
Здесь long и значение по умолчанию 0 выбраны как пример, поскольку тип id и правила его заполнения не заданы. Конструктор копирования создаёт новый объект с тем же ID. Null в нём нужно либо запретить явно, либо принять как ошибку. Конструкторы не имеют возвращаемого типа и не наследуются.