clone()
Object 클래스에 정의된 메소드이다. 호출되면 인스턴스 복사가 이뤄진다. 단, Cloneable 인터페이스를 구현해야지만 clone 메소드 호출을 허용한다.
주의!
clone()의 주인은 Object지 Clonable이 아니다. 착각하지 않도록 주의하자.
오버라이딩한 clone에는 특별한 기능은 없다. Object의 clone 메소드를 반환할 뿐이다. 하지만 오버라이딩을 통해 접근 수준을 protected에서 public으로 넓혀줌으로써 외부 접근이 가능해졌다. 참고로 Object의 clone의 접근 수준은 protected이다. 이처럼 접근 수준을 넓힐 수 있지만, public에서 protected으로 접근 수준을 좁히는 것은 허용하지 않는다.
참고!
protected 선언은 패키지가 서로 다르면 상속한 클래스 안에서만 접근(호출)을 허용한다. 상속한 클래스를 대상으로 생성한 인스턴스로는 접근이 불가능하다.
clone할 때 반환형을 주의하자! clone의 반환 타입은 Object임으로 참조형 변수의 타입에 맞게 형변환해야 한다.
'Programming > Java' 카테고리의 다른 글
JAVA 20(1) wrapper 클래스 (0) | 2021.08.11 |
---|---|
JAVA 19(5) 얕은 복사와 깊은 복사 (0) | 2021.08.11 |
JAVA 19(3) equals 메소드 (0) | 2021.08.05 |
JAVA 19(2) Object 클래스 (0) | 2021.08.05 |
JAVA 19(1) 메모리 모델 (0) | 2021.08.05 |