[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-v-chem-otlichie-mezhdu-poverkhnostnym-i-glubokim-klonirovaniem":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},88,"v-chem-otlichie-mezhdu-poverkhnostnym-i-glubokim-klonirovaniem",2,"java-core","Java Core","☕","В чем отличие между поверхностным и глубоким клонированием?","**Поверхностное копирование** копирует настолько малую часть информации об объекте, насколько это возможно. По умолчанию, клонирование в Java является поверхностным, т.е. класс `Object` не знает о структуре класса, которого он копирует. Клонирование такого типа осуществляется JVM по следующим правилам:\n\n+ Если класс имеет только члены примитивных типов, то будет создана совершенно новая копия объекта и возвращена ссылка на этот объект.\n+ Если класс помимо членов примитивных типов содержит члены ссылочных типов, то тогда копируются ссылки на объекты этих классов. Следовательно, оба объекта будут иметь одинаковые ссылки.\n\n**Глубокое копирование** дублирует абсолютно всю информацию объекта:\n+ Нет необходимости копировать отдельно примитивные данные;\n+ Все члены ссылочного типа в оригинальном классе должны поддерживать клонирование. Для каждого такого члена при переопределении метода `clone()` должен вызываться `super.clone()`;\n+ Если какой-либо член класса не поддерживает клонирование, то в методе клонирования необходимо создать новый экземпляр этого класса и скопировать каждый его член со всеми атрибутами в новый объект класса, по одному.","","middle",[15,16,17,18],"core","clone","deep-copy","shallow-copy",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":30,"featuredSnippetReady":31},"Поверхностное и глубокое клонирование в Java — Gymterview","Разница между поверхностным (shallow) и глубоким (deep) клонированием объектов в Java. Правила копирования примитивных и ссылочных типов.","Разница между поверхностным и глубоким клонированием объектов в Java: правила копирования примитивных и ссылочных типов.",[26,27,28,29,16],"поверхностное клонирование Java","глубокое клонирование Java","shallow copy","deep copy","Поверхностное копирование копирует минимум информации: примитивные поля копируются полностью, а для ссылочных типов копируются только ссылки — оба объекта будут ссылаться на одни и те же объекты. Глубокое копирование дублирует всю информацию: все члены ссылочного типа также клонируются рекурсивно, создавая полностью независимую копию объекта.",true]