Почему конструктор не вызывается при клонировании объекта в Java - PullRequest
0 голосов
/ 20 ноября 2019

Почему конструктор не вызывается при клонировании объекта в Java?

Animal a = new Animal();
Animal b = (Animal)a.clone(); // This will not invoke Animal's constructor

Если создается объект, на который ссылается переменная b, тогда будет некоторое выделение памяти, что также должно включать вызовконструктор, верно?

Но в документации сказано, что клонирование объекта вообще не подразумевает вызова вызова конструктора. Почему?

1 Ответ

0 голосов
/ 20 ноября 2019

Также я не могу понять, почему это так. Кажется, что Java просто использует другую функциональность для клонирования и создания копии объекта в отличие от создания новых объектов с помощью нового ключевого слова. Использование clone () означает, что клон создан и все значения скопированы, а ссылки также скопированы. Таким образом, clone () не создает новые объекты с новыми ссылками на указанные объекты. Может быть, clone () является своего рода конструктором?

...