比如我们写XXX类来实现Cloneable,而我们在XXX类中重写了方法clone,是不是需要在方法中调用super.clone?
问问题
105 次
4 回答
3
几个重要的指针
- Cloneable 是一个标记界面。标记接口没有声明方法或变量。他们只是告诉 JVM 这个类有能力做一些事情,例如可克隆、可序列化等
- 当您说 super.clone 时,您不是从可克隆中调用方法,实际上是在调用超类的 clone() 方法或默认情况下是 Object.clone();
如果您不想要自己的实现,可以使用 Object 的 clone 方法,但这会给您对象的浅表副本。如果你想做更多的事情,最好给出你自己的实现。
关于您最初的问题,不,如果您知道您的代码正在处理所有事情,那么调用超级方法并不是强制性的。但是如果你需要使用超类的功能(在本例中是 Object 类),你应该调用 super 方法
于 2012-08-07T05:58:14.053 回答
1
是的。如果你不调用超类实现,它需要的任何数据都不会被复制到新的克隆中。
更新 例如,超类可能希望将其私有变量复制到新克隆。
实际执行应该是
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;
于 2012-08-07T05:48:28.417 回答
0
*编辑好的,我错了,这是 super.clone() 调用的:
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#clone%28%29
你应该调用 super.clone()
于 2012-08-07T05:48:37.827 回答
0
如果we override the method clone in the class XXX
- 不需要调用 super。你只是在那里做你想做的事。- 表示复制您喜欢复制的内容和方式。
于 2012-08-07T05:50:43.407 回答