자바 clone 도무지 이해가 안갑니다 부탁드립니다

글쓴이: 익명 사용자 / 작성시간: 금, 2017/07/28 - 7:58오후
1. Clone 은 prootected이기 때문에 오버 라이딩 해애 한다.
ㅡ 그런데 같은패키지리면 상관없지않나요? 즉 디폴트 패키지인 상황에서 한클래스에서 굳이 public으로 왜 재정의를 해야하나요?
2.클래스 public object ...안에서 재정의된 public clone 매서드 에서
return super.clone()에서 super는 이클래스가 상속하는 클래스이므로 object 를 의미하는 것인가요?
3. 2번내용에서 return은 object형을 반환 하는데 이 매서드를 호출한 내용을보면
rec a
rec b
b=(rec)a.clone()
이렇게 되어있는데 의문인게 object형을 리턴하는데 이를 이를 오류없이 그냥 다운캐스팅 이 되나요? 다운캐스팅 조건이 참조값이 자식형을가지고있어야만 되는걸로 알고있습니다
Forums:
> 1. Clone 은 prootected이기 때문에
> 1. Clone 은 prootected이기 때문에 오버 라이딩 해애 한다.
아닙니다. 단순히 clone을 지원하고 싶으면 오버라이드하는 겁니다. java.lang.Object 에 clone이 protected로 선언되어 있는 것은 사용자가 정의한 클래스가 clone을 지원할 필요가 없거나 해서는 안되는 경우가 많기 때문입니다. 만약에 clone이 Object의 public 메소드로 선언되어 있었다면 모든 클래스가 clone을 적절하게 오버라이드해야 하겠지요. 자바에서는 모든 클래스가 Object를 상속하니까요. protected 니까 지원하고 싶지 않으면 그냥 오버라이드 안하면 되는 겁니다. protected 니까 오버라이드해야하는 것이 아니고 그 반대로 protected니까 오버라이드 안해도 되는겁니다.
2, 3 은 질문이 이상하군요. public object? 이게 뭔가요? rec는 또 뭐구요? 질문을 정확히 다시해보세요.
clone을 오버라이드하면 다운캐스팅은 필요없습니다. java.lang. Object.clone의 리턴 타입은 Object이지만 클래스 X의 clone의 리턴 타입은 X이어야합니다.
으음
object가 인터페이스도 아닌데 오버라이드를 하고말고는 상관이없는거 같아요 질문은 한소스파일즉 디폴트 패키지일때 clone을 오버라이딩하지않아도 사용할수 있느냐에요 다른 인스턴스를 호출하지않고 메인에서 바로
댓글 달기