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