假设我有超级A,克隆能力接口和深度重写克隆方法。
我还有一个子类B.
B Temp = new B();
B Temp_Clone = (B) Temp.clone();
方法Temp.clone()返回对克隆超类A的引用,对吧?
根据我的理解,我不能在子类对象中引用超类,对吧?
那么我在这里编写的代码是如何实现的呢?因为演员?
感谢。
答案 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型。