我认为调用“super.clone()”不会转到 Cloneable 类,而是转到抽象类..
public class Mainprogramm {
Test original = new Test();
Test copy = original.getClone();
}
public class Test extends AbstractClass implements Cloneable{
public Test getClone(){
try
{
return (Test) super.clone();
}
catch(CloneNotSupportedException a)
{
return this;
}
}
}
public class AbstractClass implements Cloneable{
//no abstract clone-method...
}
最佳答案
您的想法错误:
我认为调用“super.clone()”不会转到 Cloneable 类,而是转到抽象类。
重点是:Cloneable 只是一个接口(interface)。它的存在做了完全不同的事情;请参阅javadoc :
类实现 Cloneable 接口(interface),以向 Object.clone() 方法指示该方法对该类的实例进行逐字段复制是合法的。 p>
换句话说:你最好研究一下你打算使用的概念;而不是仅仅写下一些代码并想知道它可能会做什么。请参阅here例如。
从这个意义上说:是的,super.clone()
确实“转到”抽象基类;但是:这是您实际上可以调用clone()的唯一地方。
关于java - 如何克隆从抽象类扩展的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41924955/