Junior — Middle
Môžete vysvetliť, v čom spočíva metóda povrchového kopírovania objektov?
sobes.tech AI
Odpoveď od AI
Metóda povrchného kopírovania vytvára nový objekt kopírovaním hodnôt polí pôvodného objektu. Ak je však pole odkazom na iný objekt, kopíruje sa iba odkaz, nie samotný vnorený objekt. To znamená, že pôvodný a skopírovaný objekt budú odkazovať na rovnaké vnorené objekty.
Príklad v Jave:
class Person implements Cloneable {
String name;
Address address; // vnorený objekt
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone(); // povrchné kopírovanie
}
}
class Address {
String city;
public Address(String city) {
this.city = city;
}
}
// Použitie:
Person p1 = new Person("Иван", new Address("Москва"));
Person p2 = (Person) p1.clone();
p2.address.city = "Санкт-Петербург";
// Teraz je p1.address.city tiež "Санкт-Петербург", pretože adresa je zdieľaná
Preto je povrchné kopírovanie vhodné, keď sa vnorené objekty nemenia alebo keď nie je potrebné ich oddelenie.