java里的深克隆与浅克隆问题,百度看着傻傻分不清

有人说这样的是浅克隆:

class Book implements Cloneable{

private String name;

private double price;

public String getName() {

return name;

}


public void setName(String name) {

this.name = name;

}


public double getPrice() {

return price;

}


public void setPrice(double price) {

this.price = price;

}


public Book(String name,double price){

this.name=name;

this.price=price;

}

@Override

public String toString(){

return name+":"+price;

}

@Override

public Object clone() throws CloneNotSupportedException{

return super.clone();

}


}


class Student{

private String name;

private Book book;

}


public class CloneTest {

public static void main(String[] args) throws CloneNotSupportedException {

Book b1 = new Book("luoweideshenlin",26);

Book b2 = (Book)b1.clone();//不等价:b2=b1;

b2.setName("pingfandeshijie");

b2.setPrice(78);

System.out.println(b1.toString());

System.out.println(b2.toString());

System.out.println(b1==b2);

}


}

这个的输入结果是:

luoweideshenlin:26.0

pingfandeshijie:78.0

false

那怎么样算深克隆呢,

冯宝宝
浏览 1228回答 1
1回答

cxxyjsj

深复制不仅复制对象本身,也会复制对象的成员变量. 你可以试下Student类默认的克隆方法, 克隆后两个Studnet对象引用的book对象实际上是同一个.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java