这样做可以调用Asub的克隆方法吗?或者Asub深度克隆正确?如果没有,有没有办法通过这种方法来推动深度克隆阿斯布?在Java中克隆对象[3个问题]
abstract class Top extends TopMost {
protected Object clone() {
Object obj = super.clone();
// deep copy and try catch
}
}
abstract class A extends Top {
protected Object clone() {
Object obj = super.clone();
// deep copy and try catch
}
}
class Asub extends A {
protected Object clone() {
Object obj = super.clone();
// deep copy and try catch
}
public void doSomethingNew() {
}
}
abstract class TopMost {
public void someMethod() {
Top a = (Top) super.clone();
// more code here
}
}
public class Main {
public static void main(String... args) {
Asub class1 = new Asub();
class1.someMethod();
}
}
不幸的是,如果'ASub'进一步子类化,子类'clone()'可能不会调用'super.clone()',因为它返回一个'ASub',而不是一个'ASubSub'。所以这只有在完全控制整个类层次结构时才有效(并仔细记录了他/她的后继者的不合格克隆实现)。 – 2010-09-06 16:28:29
@PéterTörök,我完全同意你的意见。 – 2010-09-06 16:51:18
感谢您的回复家伙 – Joset 2010-09-06 17:01:46