[Java] object (3) (feat. clone)

SeongEon Kim·2022년 6월 8일
0

JAVA

목록 보기
40/52

clone은 복제라는 뜻이다. 어떤 객체가 있을 때 그 객체와 똑같은 객체를 복제해주는 기능이 clone 메소드의 역할이다.

우선 clone이라는 메소드를 통해 복제를 할 수 있는데, 그 복제하려는 객체가 복제 가능한 객체라는 사실을 Java에게 알려줘야 한다.
cloneable이라는 인터페이스를 구현해줘야 한다.

아래 코드를 통해 구체적으로 알아보자.

package org.opentutorials.javatutorials.progenitor;
 
class Student implements Cloneable{
    String name;
    Student(String name){
        this.name = name;
    }
    protected Object clone() throws CloneNotSupportedException{
    //문제 발생시 해결을 사용자에게 넘기는 장치
        return super.clone();
    }
}
 
class ObjectDemo {
 
    public static void main(String[] args) {
        Student s1 = new Student("egoing");
        try {
            Student s2 = (Student)s1.clone();
            System.out.println(s1.name);
            System.out.println(s2.name);
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
 
}

복사에 성공하여 출력하면 아래와 같이 나온다.

egoing
egoing

모든 클래스의 조상은 object이다. 그러한 특성으로 인해서 모든 클래스는 object가 가지고 있는 메소드를 공통적으로 가지고 있다. 공통적으로 가지고 있는 내용에서 필요에 따라 overiding할 수 있다.
동시에 모든 클래스는 object클래스에 담긴 데이터 타입의 변수에 인스턴스화 하여 담길 수 있다. 반대로 object 데이터 타입에 담겨있는 인스턴스는 원래의 클래스가 되려면 명시적으로 형변환을 해야 한다.

profile
꿈을 이루는 사람

0개의 댓글