Sobes.tech
Back to questions
Junior — Middle
74

Объясните понятие поверхностного копирования объекта и в чем его особенности

Companies where asked
Передовые Платежные Решения

Answer from AI

sobes.tech AI

Поверхностное копирование (shallow copy) объекта в Java создаёт новый объект, но при этом поля-объекты внутри копируются не полностью, а лишь копируются ссылки на них. То есть, вложенные объекты не дублируются, а остаются общими между оригиналом и копией.

Особенности поверхностного копирования:

  • Быстрое создание копии объекта.
  • Изменения в вложенных объектах будут видны и в оригинале, и в копии, так как они ссылаются на одни и те же объекты.
  • Подходит, если объект содержит только примитивные типы или если вложенные объекты не изменяются.

Пример поверхностного копирования с помощью метода clone():

class Person implements Cloneable {
    String name;
    Address address; // вложенный объект

    public Person clone() throws CloneNotSupportedException {
        return (Person) super.clone(); // поверхностное копирование
    }
}

class Address {
    String city;
}

// При клонировании Person создаётся новый объект Person, но поле address будет ссылаться на тот же объект Address.

Если нужно полностью независимое копирование, используют глубокое копирование (deep copy).