在Object类中,有protected Object clone() throws CloneNotSupportedException方法,在调用时确实用super.clone();那么此时这个super是指这个类本身还是它的父类?
如果这个类是直接继承于Object类本身,那么super.clone()是不是调用Object类中的clone()方法?
如果这个类直接继承的不是Object类而是另外一个类,那么调用super.clone()是返回的是父类对象还是这个类本身的对象?

解决方案 »

  1.   

    super必然父类
    那要看到底另外一个类有没有重写clone方法了
      

  2.   

    class Programmer implements Cloneable{   
      private String name;   //员工姓名
    private  int age;     //员工年龄
      private double salary; //员工工资

    /*构造方法*/
      Programmer(String name,int age,double salary)    {  
    this.name=name;       
    this.age=age;  
    this.salary=salary;   
          }    public Object clone()   throws  CloneNotSupportedException{      //定义克隆方法
    Programmer  p=(Programmer)super.clone();        //确定要复制的对象
    return p;   
    }  public static void main(String[] args) {  
    try {
    Programmer p1=new Programmer("Kevin ",25,2000);
    Programmer p2=(Programmer)p1.clone();
    p2 .name=" Andy ";      //修改p2的员工姓名
    p2.age=28; //修改p2的员工年龄
    p2.salary=3000; //修改p2的员工工资
    System.out.println("name="+p1.name+",age="+p1.age+",salary="+p1.salary);            
    System.out.println("name="+p2.name+",age="+p2.age+",salary="+p2.salary);               
    }  catch(CloneNotSupportedException e)       {      
    System.out.println("CloneNotSupportedException异常"+e. getMessage());
    e.printStackTrace();   
    }
    }
    }
    那这个程序调用的又是不是父类呢?它返回的这个类本身啊!
      

  3.   

    如果这个类是直接继承于Object类本身,那么super.clone()是不是调用Object类中的clone()方法?

    如果这个类直接继承的不是Object类而是另外一个类,那么调用super.clone()是返回的是父类对象还是这个类本身的对象?
    返回父类
      

  4.   

    应该养成试一试的习惯。调用clone();是克隆本生。但是是浅克隆。浅克隆就是只克隆基本类型和引用。引用只如果成员是对象,并不克隆这个成员对象,而只克隆这个对象的引用。重载clone就是让你自定义克隆,有时候你希望克隆成员对象而不是成员对象的引用。有时候你也许不想克隆一些东西。super.clone()只是说在克隆的时候,会先调用父的克隆函数而已。因为有些父中的域没有继承下来,比如私有域
      

  5.   

    java核心技术一书上建议在需要克隆的地方实现Cloneable接口并将其改为public