程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談Java中的克隆close()和賦值援用的差別

淺談Java中的克隆close()和賦值援用的差別

編輯:關於JAVA

淺談Java中的克隆close()和賦值援用的差別。本站提示廣大學習愛好者:(淺談Java中的克隆close()和賦值援用的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談Java中的克隆close()和賦值援用的差別正文


先生類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()和賦值援用的差別的全體內容了,願望對年夜家有所贊助,多多支撐~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved