java证明clone函数是浅拷贝

1.创建child类

public class Child {
    public String cname;
    public Child(String cname) {
        this.cname = cname;
    }
    public void setCname(String cname) {
        this.cname = cname;
    }
    public String getCname() {
        return cname;
    }
    

}

2.创建Person类

public class Person implements Cloneable{
    private int a ;
    private String name;
    public Child child ;
    public Person(int a, String name,String cname){
        this.a = a;
        this.name = name;
        this.child = new Child(cname);
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setA(int a) {
        this.a = a;
    }
    public String getName() {
        return name;
    }
    public int getA() {
        return a;
    }
    
    public void setChild(Child child) {
        this.child= child;
    }
    public Child getChild() {
        return child;
    }
     @Override
    public Object clone() throws CloneNotSupportedException {  
            return (Person)super.clone();  
        }  
     
    
}

3.输出函数

public class TestBasic {
    public static void main(String[] args) throws CloneNotSupportedException {        
        Person person1 = new Person(11,"ken","xiaoken");    
                        
        Person person4 = (Person) person1.clone(); //clone                    
        person1.setName("MIN");
        person1.child.cname="minzhong"; 
        System.out.println(person4.getName());//name没改变
        System.out.println(person4.child.cname);//person4.child.cname改变了,说明是浅拷贝                        
    }
}             

 

posted @ 2017-09-09 22:08  小众ken  阅读(187)  评论(0编辑  收藏  举报