谁能给个例子

解决方案 »

  1.   

    这个方法你得重写,object的方法不是万能的
      

  2.   

    不能用,那是protected.供你自己的类使用public Object clone()覆盖.
      

  3.   

    重写就好了,呵呵!
    按照你的要求copy一些变量,
    看你是深复制or浅复制
      

  4.   

    l clone的实现1.实现Cloneable接口通过上一篇的介绍,我们知道,一个类若要具备clone功能,就必须实现Cloneable接口。做到这一步,clone功能已经基本实现了。Clone功能对我们来说,最主要的还是要能够使用它。那么我们如何才能使用clone功能呢?答案是覆盖Object#clone()方法。2. 覆盖Object#clone()方法为什么需要覆盖Object#clone()方法?这里得再次从jdk源码说起。JDK中Object# clone()方法的原型是:protected native Object clone() throws CloneNotSupportedException;是否注意到,这里clone()方法修饰符是protected,而不是public。这种访问的不可见性使得我们对Object#clone()方法不可见。相信读者已明白为什么要覆盖Object#clone()方法。而且,覆盖的方法的修饰符必须是public,如果还保留为protected,覆盖将变得没有实际意义。下面举一个具有clone功能的简单的例子:/*     * 具有clone功能的类的例子*/public class CloneableObjExample implements Cloneable {//……部分代码已省略……      private String name = null;private int score = 0;    /** * NOTE: 将protected 修饰符 更改为 public* @see java.lang.Object#clone() */ public/*protected*/ Object clone() throws CloneNotSupportedException {    // call父类的clone方法    Object result = super.clone();     //TODO: 定制clone数据    return result;}}3.定制clone至此,clone已经真相大白。Clone的对象我们可以对其进行定制。还就上面的例子来说。下面的方法对功能做了一定的增强:public/*protected*/ Object clone() throws CloneNotSupportedException {  // call父类的clone方法  CloneableObjExample result = (CloneableObjExample)super.clone();  //TODO: 定制clone数据  //虽然”clone”了,但还可以做点调整    result.name = “New Name”;    result.score = 90;    return result;}