public class Student {
String name;
int grade;
public Student(String name, int grade) {
super();
this.name = name;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String toString() {
return this.name+" "+this.grade;
}
}
如果 Student s1("liutian",33);
Student s2=s1;因爲 這是引用類型,他們會指向同一塊內存。
所以我們要用克隆。也就是Student s2=(Student)s1.clone(); 因爲clone()返回的是Object類型,所以我們要強制轉換一下。
爲什麼會有深複製和淺複製呢?因爲類中如果有引用的屬性比如Professor,我們就要深複製了。
public class Student implements Cloneable{
String name;
int grade;
private Professor professor;
public Student(String name, int grade) {
super();
this.name = name;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
//下面這個函數要會寫。
public Object clone() throws CloneNotSupportedException{
一: return super.clone();//這一個是淺複製 ,就寫這一行就可。
二: Student nt=(Student)super.clone(); //從這一行到下面纔是深複製需要做的事情。
nt.professor=(Professor)professor.clone();
return nt;
}
public String toString() {
return this.name+" "+this.grade;
}
我們最好寫上啊,直接輸出一個對象的時候會自動調用toString方法,
}