一般java覆盖克隆方法

时间:2013-04-06 09:06:48

标签: java override clone

假设我有超级A,克隆能力接口和深度重写克隆方法。

我还有一个子类B.

B Temp = new B();
B Temp_Clone = (B) Temp.clone();

方法Temp.clone()返回对克隆超类A的引用,对吧?

根据我的理解,我不能在子类对象中引用超类,对吧?

那么我在这里编写的代码是如何实现的呢?因为演员?

感谢。

3 个答案:

答案 0 :(得分:0)

  

类Object的clone()方法创建并返回一个副本   对象,具有相同的类并且具有相同的所有字段   值。但是,Object.clone()会抛出CloneNotSupportedException   除非该对象是实现标记的类的实例   interface Cloneable。

答案 1 :(得分:0)

  

方法Temp.clone()返回对克隆超类A的引用,对吧?

右。

  

根据我的理解,我不能在子类对象中引用超类,对吧?

错误。

  

那么我在这里编写的代码是如何实现的呢?因为演员?

我不知道你认为它是不可能的,但铸造肯定是必需的。

答案 2 :(得分:-1)

好吧,如果A中的代码调用super.clone,那么当你调用Temp.clone时创建的对象是来自类型B的对象,因为clone不会调用构造函数! clone方法在对象类中实现为本机类,并且preform成员明智地复制并创建与此对象相同的对象。所以ClonedTemp来自B型。

相关问题