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.