java中的clone方法
的有关信息介绍如下:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。而Clone方法就是Java中对类的克隆的一个概念,下面简单进行说明
clone顾名思义就是复制, 而Java语言是面向对象的高级开发语言, 所以clone方法作用对象是类。对于复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。
了解了这个原理,大家就明白了,在Java中有两种创建对象的方法,一种是使用new关键字创建,另外一种就是使用Clone方法去复制了
创建对象的过程是解析new关键字后的类型->根据类型分配内存->调用类的构造函数初始化类结构->完成;而Clone方法复制对象的过程是根据调用对象的类型分配内存->根据调用对象的结构去填充内存->完成
可以用下面的代码来说明Clone方法的具体细节:
Computer c=new Computer("dell", "4G内存");
Computer c1=c.Clone();
在这两句代码中有两个Computer类型的对象c和c1,其中c1就是通过Clone方法复制的c,我们可以使用System.out.println()方法将两个对象的内存地址打印出来,会发现是两个不同的值。
在Java中,Clone方法有两种不同的模式,即浅复制和深复制(也被称为浅拷贝和深拷贝)。对于浅复制,只是对象的引用得到的复制;如果对象中存在其他对象的引用,使用浅复制后,源对象和复制后的对象中对其他对象的引用会指向同一个内存地址。如果要完全把两个对象在内存中分开,必须使用深复制。
对于Java自己的类库,Clone方法是自动实现的,我们自己写的类要想实现Clone方法,就必须实现Cloneable中的clone()方法,如下:
public class Computer implements Cloneable {
......................
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
}