Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, kāds ir virsmas kopēšanas objektiem metode?

sobes.tech AI

Atbilde no AI

Virsmas kopēšanas metode izveido jaunu objektu, kopējot sākotnējā objekta lauku vērtības. Tomēr, ja lauks ir atsauce uz citu objektu, tiek kopēta tikai atsauce, nevis iekšējais objekts. Tas nozīmē, ka sākotnējais un kopētais objekts atsauksies uz tās pašas iekšējās objektus.

Piemērs Java:

class Person implements Cloneable {
    String name;
    Address address; // iekšējais objekts

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

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone(); // virsmas kopēšana
    }
}

class Address {
    String city;

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

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

p2.address.city = "Санкт-Петербург";
// Tagad p1.address.city ir arī "Санкт-Петербург", jo adrese ir kopīga

Tādēļ virsmas kopēšana ir piemērota, ja iekšējie objekti nemainās vai ja nav nepieciešams tos atdalīt.