请写一个浅拷贝Java程序
时间: 2023-09-23 22:08:51 浏览: 67
以下是一个浅拷贝的Java程序示例:
```java
public class Person implements Cloneable {
private String name;
private int age;
private Address address;
public Person(String name, int age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Address getAddress() {
return address;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public static void main(String[] args) throws CloneNotSupportedException {
Address address = new Address("China", "Beijing");
Person originalPerson = new Person("Tom", 20, address);
Person clonedPerson = (Person) originalPerson.clone();
System.out.println("Original Person: " + originalPerson.getName() + " " + originalPerson.getAge() + " " + originalPerson.getAddress());
System.out.println("Cloned Person: " + clonedPerson.getName() + " " + clonedPerson.getAge() + " " + clonedPerson.getAddress());
address.setCity("Shanghai");
System.out.println("Original Person: " + originalPerson.getName() + " " + originalPerson.getAge() + " " + originalPerson.getAddress());
System.out.println("Cloned Person: " + clonedPerson.getName() + " " + clonedPerson.getAge() + " " + clonedPerson.getAddress());
}
}
class Address {
private String country;
private String city;
public Address(String country, String city) {
this.country = country;
this.city = city;
}
public String getCountry() {
return country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return country + " " + city;
}
}
```
这个程序中,我们定义了一个`Person`类和一个`Address`类。`Person`类中包含了一个`Address`对象。在`main`方法中,我们创建了一个`Person`对象`originalPerson`,并将其克隆到`clonedPerson`中。然后我们修改了`address`的`city`属性为"Shanghai",并打印出了两个`Person`对象的信息。
由于浅拷贝只是拷贝了对象的引用,而不是对象本身,因此我们修改了`address`的`city`属性后,两个`Person`对象的`address`属性都被修改了。