Junior — Middle
163
Чӣ гуна фарқияти байни нусхаи амиқ ва нусхаи сатҳӣ фарқ мекунад ва асосии фарқиятҳо дар чист?
Ширкатҳо дар куҷо пурсиданд
Передовые Платежные Решения
Ҷавоб аз AI
sobes.tech AI
Поверхностное копирование (shallow copy) создаёт новый объект, но поля этого объекта ссылаются на те же вложенные объекты, что и оригинал. Глубокое копирование (deep copy) создаёт новый объект и рекурсивно копирует все вложенные объекты, так что копия полностью независима.
Основные различия:
- При поверхностном копировании изменения в вложенных объектах отражаются в обеих копиях.
- При глубоком копировании вложенные объекты тоже копируются, изменения в копии не влияют на оригинал.
Пример в Java:
class Person implements Cloneable {
String name;
Address address; // вложенный объект
public Person cloneShallow() throws CloneNotSupportedException {
return (Person) super.clone();
}
public Person cloneDeep() {
Person copy = new Person();
copy.name = this.name;
copy.address = new Address(this.address.street);
return copy;
}
}
class Address {
String street;
Address(String street) { this.street = street; }
}
Здесь cloneShallow скопирует ссылку на address, а cloneDeep создаст новый объект Address.