A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钱灿 中级黑马   /  2013-4-29 21:44  /  2069 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么无法直接调用?

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 恭喜25分

查看全部评分

8 个回复

倒序浏览
要调用clone方法必须实现Cloneable接口才可以实现克隆, 这个方法返回当前对象的一个副本, 相当于产生一个一模一样对象, 但是不是同一个对象

点评

Totally Agree!  发表于 2013-5-1 01:56
回复 使用道具 举报
breeze 发表于 2013-4-29 21:52
要调用clone方法必须实现Cloneable接口才可以实现克隆, 这个方法返回当前对象的一个副本, 相当于产生一个一 ...

不仅仅是这样啊,还有在子类中无法调用,错误: clone()可以在Object中访问protected
回复 使用道具 举报
钱灿 发表于 2013-4-29 22:21
不仅仅是这样啊,还有在子类中无法调用,错误: clone()可以在Object中访问protected ...

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

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

可以这样做
回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马