Ответ
Shallow Copy создает новый объект, но копирует только ссылки на вложенные объекты, а не сами объекты. Изменения вложенных объектов в копии повлияют на оригинал.
Deep Copy создает полностью независимую копию, включая все вложенные объекты. Изменения в копии не затрагивают оригинал.
Пример (Kotlin):
data class Person(var name: String, var friend: Person?)
// Shallow copy (использует copy() у data class)
val original = Person("Alice", Person("Bob", null))
val shallowCopy = original.copy()
shallowCopy.friend?.name = "Charlie" // Изменится и в original!
// Deep copy (нужна ручная реализация)
val deepCopy = original.copy(friend = original.friend?.copy())
deepCopy.friend?.name = "Dave" // Оригинал не изменится