Cloneable 인터페이스 Cloneable은 Object 클래스에 정의된 protected 메서드인 clone의 동작 방식을 결정하는 인터페이스입니다. Cloneable을 구현한 클래스의 인스턴스에서 clone을 호출할 경우 해당 객체의 필드들을 하나하나 복사한 객체를 반환하고 Clonable을 구현하지 않은 클래스에서 clone()을 호출할 경우 CloneNotSupportedException을 던집니다. 일반적으로 인터페이스를 구현한다는 것은 해당 클래스가 그 인터페이스에서 정의한 기능을 제공한다고 선언하는 행위인데 Cloneable의 경우 상위 클래스인 Object에 정의된 protected 메서드의 동작 방식을 변경한 것이기 때문에 인터페이스를 잘 못 사용한 예시라고 볼 수 있습니다. 정리하자..