首先请不要用Thinking in Java里的话回答1.clone跟C++中的深拷贝 浅拷贝有联系吗?
2.什么副本和引用的过程麻烦用浅显易懂并且逻辑鲜明的话解释。
3.super.clone()怎么回事,糊涂了..
4.Object中权限是protected 为何要用public覆盖,是必须的吗?请高手指教。

解决方案 »

  1.   

    java中的clone也是分潜拷贝和深拷贝的。
    对副本的修改,不会影响原对象;引用则会。
    super.clone()应该是调用Object对象的实现。
      

  2.   

    定义为public, 这样才能让所有的方法克隆该对像。 
      

  3.   

    还是分深浅拷贝的.
    super.clone()就是简单的调用父类的clone()方法啊.假如你的类是继续自其它类(非Object)的时候这就是非常必要了嘛.类A
    {
        ArrayList list = new ArrayList();  
    }A a = new A();
    A b = a.clone();
    如果是浅拷贝:
    那么a,b都有一个"list"引用变量,而且都是引用"同一个"对象.
    如果是深拷贝:那么a,b应该是都有一个"list"引用变量,但是他们引用的不是同一个对象ArryList,而这两个ArrayList的内容却是一样的,也就是需要list也来clone一个.