在Object类中,有protected Object clone() throws CloneNotSupportedException方法,在调用时确实用super.clone();那么此时这个super是指这个类本身还是它的父类?
如果这个类是直接继承于Object类本身,那么super.clone()是不是调用Object类中的clone()方法?
如果这个类直接继承的不是Object类而是另外一个类,那么调用super.clone()是返回的是父类对象还是这个类本身的对象?
如果这个类是直接继承于Object类本身,那么super.clone()是不是调用Object类中的clone()方法?
如果这个类直接继承的不是Object类而是另外一个类,那么调用super.clone()是返回的是父类对象还是这个类本身的对象?
那要看到底另外一个类有没有重写clone方法了
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();
}
}
}
那这个程序调用的又是不是父类呢?它返回的这个类本身啊!
是
如果这个类直接继承的不是Object类而是另外一个类,那么调用super.clone()是返回的是父类对象还是这个类本身的对象?
返回父类