首页 > 编程 > Java > 正文

浅谈Java中的克隆close()和赋值引用的区别

2019-11-26 13:46:27
字体:
来源:转载
供稿:网友

学生类Student:

package 克隆clone;/*要克隆必须实现这个借口:Cloneable,以标记这个对象可以克隆 Cloneable:此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。  这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了。 */public class Student implements Cloneable {	private String name;	private int age;	public Student() {	}	public Student(String name, int age) {		super();		this.name = name;		this.age = age;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}	// 重写克隆方法子列才可以调用	@Override	protected Object clone() throws CloneNotSupportedException {		return super.clone();	}}

测试克隆学生类:

package 克隆clone;/* *	protected void finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。用于垃圾回收,但是什么时候回收不确定。 *	protected Object clone():创建并返回此对象的一个副本。 *		A:重写该方法 * * Cloneable:此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。  * 	这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的复制了。 */public class StudentClone {	public static void main(String[] args) throws CloneNotSupportedException {		//创建学生对象		Student s = new Student();		s.setName("林青霞");		s.setAge(27);				//克隆学生对象		Object obj = s.clone();		Student s2 = (Student)obj;		System.out.println("---------");				System.out.println(s.getName()+"---"+s.getAge());		System.out.println(s2.getName()+"---"+s2.getAge());				//以前的做法		Student s3 = s;		System.out.println(s3.getName()+"---"+s3.getAge());		System.out.println("---------");				//其实是有区别的		s3.setName("刘意");		s3.setAge(30);		System.out.println(s.getName()+"---"+s.getAge());		System.out.println(s2.getName()+"---"+s2.getAge());		System.out.println(s3.getName()+"---"+s3.getAge());		System.out.println("---------");				//把克隆的改一下呢?		s2.setName("克隆改的名称");		s2.setAge(66);		System.out.println(s.getName()+"---"+s.getAge());		System.out.println(s2.getName()+"---"+s2.getAge());		System.out.println(s3.getName()+"---"+s3.getAge());				//也就是说把一个对象的引用赋值给一个引用,当这个引用发什么该改变的时候,同一个引用指向的对象会发生改变,但是克隆的不会变化,		//把克隆的对象改变他的一些属性,那么也不会影响到其他的对象的值的改变			}}

以上就是小编为大家带来的浅谈Java中的克隆close()和赋值引用的区别的全部内容了,希望对大家有所帮助,多多支持武林网~

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表