首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于接口Cloneable

关于接口Cloneable
EN

Stack Overflow用户
提问于 2012-08-07 13:45:26
回答 4查看 104关注 0票数 0

例如,我们编写类XXX来实现Cloneable,并且我们覆盖了类XXX中的方法clone,那么是否有必要在方法中调用super.clone?

EN

回答 4

Stack Overflow用户

发布于 2012-08-07 13:58:14

几个重要的指针

  1. Cloneable是一个标记接口。标记接口未声明方法或变量。它们只是告诉JVM这个类具有执行某些操作的能力,例如cloneable、serializable等。当您说super.clone时,您并不是从cloneable调用方法,而是在调用超类或缺省情况下的
  2. ()方法

如果您不需要自己实现,可以使用object的clone方法,但这将为您提供对象的浅层副本。如果你想做更多的事情,最好给出你自己的实现。

关于你最初的问题,不,如果你知道你的代码可以处理所有事情,那么调用一个超级方法并不是一种强制。但如果需要使用超类(在本例中为对象类)的功能,则应调用超方法

票数 3
EN

Stack Overflow用户

发布于 2012-08-07 13:48:28

是。如果不调用超类实现,它所需的任何数据都不会复制到新的克隆中。

更新例如,超类可能希望将它的私有变量复制到新的克隆。

实际的实现应该是

代码语言:javascript
复制
XXX clone =    super.clone();

// 'clone' now has all the data the super class wants to know.
// add any details from your XXX class to it here.

return clone;
票数 1
EN

Stack Overflow用户

发布于 2012-08-07 13:48:38

*编辑ok我错了这里是super.clone()调用的:

http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#clone%28%29

您应该调用super.clone()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11839928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档