: 클래스에서 인스턴스를 만드는(new) 대신 인스턴스를 복사해서 새 인스턴스를 만드는 것. 즉 복사본 반환
: 원본(원형)을 만들어놓고 그걸 계속 복사.
✅ 왜 필요하지?
- 종류가 너무 많아 클래스로 정의할 수 없는 경우 (ex. 배열)
- 객체가 복잡할 수도 있고, 초기화하는게 오래 걸릴 수도 있고 새로 만드는게 부담스러울 때. 즉, 인스턴스 생성이 어려운 경우
- 프레임워크와 생성하는 인스턴스를 분리하고 싶을 때(Spring)
✅ Java의 clone()
- Object 클래스에 정의되어 있음
- 얕은 복사(필드 대 필드 복사)
- 복사 대상이 되는 클래스는 Cloneable 인터페이스 구현해야 함
해당 인터페이스는 메서드가 하나도 선언되어 X. 단순히 clone()로 복제를 허용한다는 표시. 즉, 마커 인터페이스 역할