clone()메소드를 사용하려면 클래스에 Cloneable 인터페이스를 구현해야한다.
객체를 복제하는 메소드이다.
사용하기 위해서는 클래스에 Cloneable 인터페이스를 구현해야한다.
Cloneable 인터페이스의 clone메소드를 구현해야하며, 기본 반환값이 Obeject이기 때문에 재정의를 통해 미리 형변환을 할 수 있다.
//Cloneable 인터페이스를 구현
class Student implements Cloneable{
String studentName;
int studentID;
boolean scholarship;
Student(String studentName,int studentID,boolean scholarship){
this.studentName = studentName;
this.studentID = studentID;
this.scholarship = scholarship;
}
//toString() 재정의
@Override
public String toString() {
return "student의 정보 {" +
"studentName='" + studentName + '\'' +
", studentID=" + studentID +
", scholarship=" + scholarship +
'}';
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Student){
Student std =(Student) obj;
if(this.studentID == std.studentID){
return true;
}else {
return false;
}
}
return false;
}
@Override
public int hashCode() {
return this.studentID;
}
@Override
protected Student clone() throws CloneNotSupportedException {
Object obj = null;
obj = super.clone();
return (Student)obj; //미리 형변환
}
}
public class Test0805 {
public static void main(String[] args) throws CloneNotSupportedException {
Student minsu = new Student("민수", 202045802, false);
Student minsu_copy = minsu.clone();
System.out.println(minsu_copy.studentID); //202045802
System.out.println(minsu.equals(minsu_copy)); //true
}
}