Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ է մակերեսային պատճենման մեթոդը:

sobes.tech AI

Պատասխան AI-ից

Եռանկյունու մակերեսային պատճենման մեթոդը ստեղծում է նոր օբյեկտ՝ պատճենելով սկզբնական օբյեկտի դաշտերի արժեքները։ Սակայն, եթե դաշտը հղում է այլ օբյեկտի, պատճենվում է միայն հղումը, ոչ թե ներսի օբյեկտը։ Սա նշանակում է, որ սկզբնական և պատճենված օբյեկտները հղում կկատարեն նույն ներսի օբյեկտներին:

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 նույնպես "Санкт-Петербург" է, քանի որ հասցեն ընդհանուր է

Այսպիսով, մակերեսային պատճենումը հարմար է, երբ ներսի օբյեկտները չեն փոխվում կամ երբ անհրաժեշտ չէ նրանց բաժանումը։