Sobes.tech
Junior — Middle

Pode explicar em que consiste o método de cópia superficial de objetos?

sobes.tech IA

Resposta da IA

O método de cópia superficial cria um novo objeto copiando os valores dos campos do objeto original. No entanto, se um campo for uma referência a outro objeto, apenas a referência é copiada, não o objeto aninhado em si. Isso significa que o objeto original e o copiado irão referenciar os mesmos objetos aninhados.

Exemplo em Java:

class Person implements Cloneable {
    String name;
    Address address; // objeto aninhado

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

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone(); // cópia superficial
    }
}

class Address {
    String city;

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

// Uso:
Person p1 = new Person("Иван", new Address("Москва"));
Person p2 = (Person) p1.clone();

p2.address.city = "Санкт-Петербург";
// Agora p1.address.city também é "Санкт-Петербург", pois o endereço é compartilhado

Portanto, a cópia superficial é adequada quando os objetos aninhados não mudam ou quando não é necessário separar os objetos aninhados.