다른패키지(java.lang)이지만 접근제어자가 protected인 clone메소드를 왜 못쓰는지
드디어알았다.
자바의 기본개념상 clone은 사용가능해야하는게 맞음.
실제로 접근이 가능하기때문에 오버라이딩이 되는것이기도하지.
단지!!!!
protected Object clone()을 쓰려면, 지켜야할 규칙이 3가지가 있음
첫째, 쓰려고하는 객체의 클래스는 cloneable을 구현해야한다.
->클래스가 Cloneable인터페이스를 구현하는것으로、Object.clone() 메소드가 그 클래스의 필드로부터 필드로 복사한 인스턴스를 작성하는것이 가능하다는것을 나타낸다
둘째,cloneable에는 checked 익셉션인 CloneNotSupportedException를 예외처리나 쓰로우를 해줘야함
->Cloneable인터페이스를 구현하지않는객체에 대해서 Object객체의 clone 메소드를 호출하면 예외 CloneNotSupportedException가 발생한다.
셋째,인터페이스를 구현한 클래스는、public메소드로 object.clone (protected)를 오버라이딩 할 필요가 있습니다.(강제)
결국 3가지를 지켜야 사용이 가능하다는말이었음.
protected의 문제가아니였다.
댓글 0