`
dyllove98
  • 浏览: 1381384 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:38287
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:78594
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:131731
社区版块
存档分类
最新评论

Java深拷贝与浅拷贝

阅读更多

深拷贝与浅拷贝主要的不同是对于引用变量的拷贝,浅拷贝的引用变量不仅仅是拷贝一个引用(地址).引用变量的成员也一样深拷贝。废话少说下面是两个拷贝的例子

1.浅拷贝

 1 package com.LightCopy;
 2 
 3 public class Professor implements Cloneable{
 4     private String name;
 5     private int age;
 6 
 7     public String getName() {
 8         return name;
 9     }
10 
11     public void setName(String name) {
12         this.name = name;
13     }
14 
15     public int getAge() {
16         return age;
17     }
18 
19     public void setAge(int age) {
20         this.age = age;
21     }
22 
23     public Professor(String name, int age) {
24         this.name = name;
25         this.age = age;
26     }
27     
28     @Override
29     public Object clone()  {
30          Professor o=null;    
31             try    
32              {    
33                  o=(Professor) super.clone();    
34              }    
35             catch(CloneNotSupportedException e)    
36              {    
37                  e.printStackTrace();
38              }  
39             
40             return o;    
41          }    
42     
43 }
View Code

2.深拷贝

 1 package com.DeepCopy;
 2 
 3 import com.LightCopy.Professor;
 4 
 5 public class Student implements Cloneable {
 6     private String name;
 7     private int age;
 8     private Professor pro;
 9     public Professor getPro() {
10         return pro;
11     }
12 
13     public void setPro(Professor pro) {
14         this.pro = pro;
15     }
16 
17     public Student(String name, int age,Professor pro) {
18         this.name = name;
19         this.age = age;
20         this.pro=pro;
21     }
22 
23     public String getName() {
24         return name;
25     }
26 
27     public void setName(String name) {
28         this.name = name;
29     }
30 
31     public int getAge() {
32         return age;
33     }
34 
35     public void setAge(int age) {
36         this.age = age;
37     }
38 
39     @Override
40     public Object clone() {
41         Student obj = null;
42         try {
43             obj = (Student) super.clone();
44         } catch (CloneNotSupportedException ex) {
45             ex.printStackTrace();
46         }
47         obj.pro=(Professor)pro.clone();
48         return obj;
49     }
50 }
View Code

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics