一java小问题,clone!!!

来源:百度知道 编辑:UC知道 时间:2024/05/20 01:37:35
为什么一个对象进行克隆的时候一定要在对象的类中覆盖object的clone方法呢?
所有的类都继承于object,这就应该可以调用父类的方法啊(除private的)。是吗?
求救高人!
可以就直接用要克隆的对象调用clone方法啊
student b=a.clone();//a为要克隆的对象,把克隆出的对象给b对象

你现在要克隆的是你自己做得这个类的对象,所以
你必须要重写object中的clone方法,并且把它的
访问修饰符改为public的这样你才能通你的对象
调用clone方法,Object的克隆只是定义了一种数据
复制的算法,他是复制出来的类型是需要你去转换的

哎,看来都没怎么用过Clone。其实是这样的,一个类对象要想有Clone功能,这个类就要实现Cloneable接口,然后覆写 clone();方法即可。
比如:

public class CloneTest {
public static void main(String[] args) {
//新建一个人对象
CloneablePerson person = new CloneablePerson("张三丰");
//克隆一个人,这里要用到转型,而JDK1.5以后,实现方法就有点不同了,返回后就直接是这个对象了,但做法基本类似
CloneablePerson clonePerson = (CloneablePerson)person.clone();
//==运算符应用于对象,是计算两个对象引用相等性,
//下面结果如果为true,那么,person和clonePerson指向的就是同一块内存,即两个对象是一样的,也就是同一个对像的不同别名
//结果如果为false,就表明person和clonePerson不是指向同一块内存,即两个对象不是同一个对象,那就是克隆成功了
System.out.println(person==clonePerson);

//这个只是打印两个对象的封装的数据是一样的,却不能表明两个对象就是同一个对象
//具体看一下CloneablePerson类的equals方法就知道了
System.out.println(person.equals(clonePerson));
}
}

class CloneablePerson implements Clonea