JAVA 기초 (29) clone()

코린이서현이·2023년 8월 7일
0

Java

목록 보기
29/46

🙂들어가면서🙂

clone()메소드를 사용하려면 클래스에 Cloneable 인터페이스를 구현해야한다.

📖 clone()

객체를 복제하는 메소드이다.
사용하기 위해서는 클래스에 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

    }
}


profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글