1220. Чем отличаются конструктор по-умолчанию, конструктор копирования и конструктор с параметрами?
В Java конструктор по умолчанию создается автоматически, если не определять явно конструктор класса. Он используется для создания объекта класса со значениями по умолчанию или без параметров.
Конструктор копирования создает новый объект, который является точной копией существующего объекта. Он используется для создания нового объекта, который имеет те же значения полей, что и старый объект.
Конструктор с параметрами предназначен для инициализации полей объекта при его создании. Он определяется пользователем и принимает параметры, значения которых используются для инициализации соответствующих полей объекта.
Важно отметить, что если в классе определен конструктор, то конструктор по умолчанию автоматически не создается. Конструктор по умолчанию не передает никаких параметров и может не выполнять никаких действий. Если класс определяет только конструкторы с параметрами, то в этом классе создание объекта без передачи параметров будет вызывать ошибку компиляции.
Пример создания конструкторов:
public class MyClass {
private int num;
private String str;
// конструктор по умолчанию
public MyClass() {
num = 0;
str = "";
}
// конструктор с параметрами
public MyClass(int num, String str) {
this.num = num;
this.str = str;
}
// конструктор копирования
public MyClass(MyClass obj) {
num = obj.num;
str = obj.str;
}
}
В примере выше класс MyClass определяет три конструктора: конструктор по умолчанию, конструктор с параметрами и конструктор копирования. Конструктор с параметрами инициализирует поля объекта переданными параметрами при создании объекта, а конструктор копирования создает новый объект, который является точ ной копией существующего объекта.