日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 对象克隆_JAVA对象克隆

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 对象克隆_JAVA对象克隆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1> 為了獲取對象的一份拷貝,我們可以利用Object類的clone()方法。

2> 在派生類中覆蓋基類的clone(),并聲明為public。

3> 在派生類的clone()方法中,調用super.clone()。

4> 在派生類中實現Cloneable接口。

4> 沒有抽象方法的接口叫標識接口。

5> 為什么我們在派生類中覆蓋Object的clone()方法時,一定要調用super.clone()呢?在運行時刻,Object 的clone()方法能識別出你要復制的是哪一個對象,然后為此對象分配空間,并進行對象的復制,將原 始對象的內容一一復制到新的對象空間去。

* 淺克隆是針對沒有引用類型的變量來克隆。針對引用類型的克隆應該用Deeply Clone。

淺克隆:

Code:

class FleetClone

{

public static void main(String[] args)

{

Professor p=new Professor("feiyang",23);

Student s1=new Student("zhangshan",18,p);

Student s2=(Student)s1.clone();

s2.p.name="feifei";

s2.p.age=30;

System.out.println("name="+s1.p.name+","+"age="+s1.p.age);

}

}

class Professor

{

String name;

int age;

Professor(String name,int age)

{

this.name=name;

this.age=age;

}

}

class Student implements Cloneable

{

Professor p;

String name;

int age;

Student(String name, int age,Professor p)

{

this.name=name;

this.age=age;

this.p=p;

}

public Object clone()

{

Object o=null;

try

{

o=super.clone();

}

catch(CloneNotSupportedException e)

{

e.printStackTrace();

}

return o;

}

}

改變學生s2的教授信息,打印s1教授信息,結果為:name=feifei,age=30.產生這個結果是因為String是一個常量類型.

深克隆

code:

class DeeplyClone

{

public static void main(String[] args)

{

Professor p=new Professor("feiyang",23);

Student s1=new Student("zhangshan",18,p);

Student s2=(Student)s1.clone();

s2.p.name="Bill.Gates";

s2.p.age=30;

System.out.println("name="+s1.p.name+","+"age="+s1.p.age);

}

}

class Professor implements Cloneable

{

String name;

int age;

Professor(String name,int age)

{

this.name=name;

this.age=age;

}

public Object clone()

{

Object o=null;

try

{

o=super.clone();

}

catch(CloneNotSupportedException e)

{

e.printStackTrace();

}

return o;

}

}

class Student implements Cloneable

{

Professor p;

String name;

int age;

Student(String name, int age,Professor p)

{

this.name=name;

this.age=age;

this.p=p;

}

public Object clone()

{

//Object o=null;

Student o=null;

try

{

o=(Student)super.clone();

}

catch(CloneNotSupportedException e)

{

e.printStackTrace();

}

o.p=(Professor)p.clone();

return o;

}

}

打印結果為:name=Bill.Gates,age=30,這就是深克隆.

總結

以上是生活随笔為你收集整理的java 对象克隆_JAVA对象克隆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。