Sobes.tech
Назад к вопросам
Junior — Middle
71

Чем отличается создание копии объекта по принципу глубокой копии от поверхностной копии?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Поверхностная копия (shallow copy) создаёт новый объект, но копирует только ссылки на вложенные объекты, а не сами вложенные объекты. Это значит, что изменения во вложенных объектах отразятся и в копии.

Глубокая копия (deep copy) создаёт новый объект и рекурсивно копирует все вложенные объекты, то есть копия полностью независима от оригинала.

Пример на Kotlin:

data class Person(var name: String, var address: Address)
data class Address(var city: String)

val original = Person("Ivan", Address("Moscow"))
val shallowCopy = original.copy() // копия с тем же объектом Address
val deepCopy = original.copy(address = Address(original.address.city)) // создаём новый Address

shallowCopy.address.city = "Saint Petersburg"
println(original.address.city) // выведет "Saint Petersburg" — изменился и оригинал

deepCopy.address.city = "Novosibirsk"
println(original.address.city) // останется "Saint Petersburg" — deepCopy независим