您的位置:首页 > 编程语言 > Java开发

Java-Clone改写

2012-10-25 16:47 295 查看
public class CloneDemo  {
public static void main(String[] args) {
Shirt t = new Shirt();
Person p1 = new Person("vicky","fan");
Person p2 = (Person)p1.clone();
System.out.println(p1);

p1.shirt.color = 44;
System.out.println(p1);

System.out.println(p2);

}

}

class Person implements Cloneable{

String firstName;
String lastName;
Shirt shirt;

Person(String firstName, String lastName) {
this.firstName  = firstName;
this.lastName = lastName;
this.shirt = new Shirt();
}

Person(String firstName, String lastName,Shirt shirt) {
this.firstName  = firstName;
this.lastName = lastName;
this.shirt = shirt;
}

public String getFirstName() {
return firstName;
}

public String getLastName() {
return lastName;
}

public String toString() {
return ("[first name: " + firstName + "," + "last name: " + lastName + " Shirt: " + shirt + "]");
}

public  Object clone(){

        Person o = null;  

        try {  

          o = (Person)super.clone();
 if(o.shirt != null) {
 
o.shirt =(Shirt)shirt.clone();
 }
 

        } catch (CloneNotSupportedException e) {
e.printStackTrace();
}  

        return o;  

      }  

}

class Shirt implements Cloneable{
int color;
public Shirt() {
color = 33;
}
public String toString() {
return String.valueOf(color);
}
public  Object clone(){

        Object o = null;  

        try {  

          o = super.clone();
 

        } catch (CloneNotSupportedException e) {
e.printStackTrace();
}  

        return o;  

      }
}

===================================================

[first name: vicky,last name: fan Shirt: 33]

[first name: vicky,last name: fan Shirt: 44]

[first name: vicky,last name: fan Shirt: 33]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: