Sobes.tech
Junior — Middle

Obyektlarning sathiy nusxalash usuli nima ekanligini tushuntirib berishingiz mumkinmi?

sobes.tech AI

AIdan javob

Yuzaki nusxa ko'chirish usuli, asl obyektdagi maydon qiymatlarini nusxa qilib yangi obyekti yaratadi. Ammo, agar maydon boshqa obyektdagi havola bo'lsa, faqat havola nusxa olinadi, o'z ichiga olgan ob'ekt emas. Bu shuni anglatadiki, asl va nusxa olingan ob'ektlar bir xil ichki ob'ektlarga havola qiladilar.

Java misoli:

class Person implements Cloneable {
    String name;
    Address address; // ichki ob'ekt

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

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone(); // yuzaki nusxa
    }
}

class Address {
    String city;

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

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

p2.address.city = "Санкт-Петербург";
// Endi p1.address.city ham "Санкт-Петербург" bo'lib, manzil umumiy

Shuning uchun, yuzaki nusxa olish, ichki ob'ektlar o'zgarmas yoki ichki ob'ektlarni ajratish shart emas bo'lsa, mos keladi.