黑马程序员技术交流社区

标题: 关于Object类里的一个方法clone() [打印本页]

作者: 钱灿    时间: 2013-4-29 21:44
标题: 关于Object类里的一个方法clone()
为什么无法直接调用?
作者: breeze    时间: 2013-4-29 21:52
要调用clone方法必须实现Cloneable接口才可以实现克隆, 这个方法返回当前对象的一个副本, 相当于产生一个一模一样对象, 但是不是同一个对象
作者: 钱灿    时间: 2013-4-29 22:21
breeze 发表于 2013-4-29 21:52
要调用clone方法必须实现Cloneable接口才可以实现克隆, 这个方法返回当前对象的一个副本, 相当于产生一个一 ...

不仅仅是这样啊,还有在子类中无法调用,错误: clone()可以在Object中访问protected
作者: breeze    时间: 2013-4-29 23:03
钱灿 发表于 2013-4-29 22:21
不仅仅是这样啊,还有在子类中无法调用,错误: clone()可以在Object中访问protected ...

Object本身并没有实现Cloneable接口, 你可以克隆一个数组试试, 所有的数组都被视为实现接口Cloneable
作者: 黄茂霖    时间: 2013-4-29 23:09
23种设计模式中之一“原型模式”,Object的clone()方法就是具备这样的功能。
你随便定义一个类,这个类就具备clone()方法。如果你熟悉“原型模式”就知道这个方法的大概用处。
可以参考我的博客:http://blog.163.com/it_network/blog/static/218708395201332911925981/
可以百度一下!~
作者: 钱灿    时间: 2013-4-29 23:16
breeze 发表于 2013-4-29 23:03
Object本身并没有实现Cloneable接口, 你可以克隆一个数组试试, 所有的数组都被视为实现接口Cloneable ...

我定义了一个类A,实现了接口Cloneable. 创建类A的实例来q1,声明q2,并将q1克隆给q2.
作者: 刘沛霞    时间: 2013-4-30 20:36
clone 是实现Cloneable之后才可以使用,类的克隆,是防止对象被修改,导致其它类访问的时候值不一致,将对象克隆后,所有实例防问只是这个对象的副本,副本不能做任何操作,以保证对象的安全与原子性。
作者: breeze    时间: 2013-5-1 00:12
钱灿 发表于 2013-4-29 23:16
我定义了一个类A,实现了接口Cloneable. 创建类A的实例来q1,声明q2,并将q1克隆给q2. ...

可以这样做
作者: 曹睿翔    时间: 2013-5-1 07:12
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2