Sobes.tech
Junior — Middle
85

Можете объяснить, в чем заключается метод поверхностного копирования объектов?

AI-дан жауап

sobes.tech AI

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

Пример в Java:

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

    public Person(String name, Address address) {
        this.name = name;
        this.address = address;
    }

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

class Address {
    String city;

    public Address(String city) {
        this.city = city;
    }
}

// Использование:
Person p1 = new Person("Иван", new Address("Москва"));
Person p2 = (Person) p1.clone();

p2.address.city = "Санкт-Петербург";
// Теперь p1.address.city тоже "Санкт-Петербург", так как адрес общий

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