如何克隆从抽象类扩展的对象?

时间:2017-01-29 19:21:05

标签: java object interface clone abstract

我认为电话" 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...
}

1 个答案:

答案 0 :(得分:2)

您正在考虑错误

我认为调用“super.clone()”不会转到Cloneable类而是转到抽象类。

重点是:可克隆只是界面。它的存在完全不同;请参阅javadoc

一个类实现了Cloneable接口,以向Object.clone()方法指示该方法合法地为该类的实例创建一个字段的副本。

换句话说:您最好学习您打算使用的概念;而不是仅仅放下一些代码并想知道它可能在做什么。例如,请参阅here

从这个意义上说:是的,super.clone()确实“去”抽象基类;但是:这是你实际上可以调用clone()的唯一地方。