[자바] clone()메소드에 대해 질문 드립니다.
봄바람
이 메소드가 뭘 하는지는 대략 알고 있습니다.
Cloneable인터페이스를 구현한 클래스의 인스턴스를 복제하는..
그런 개념으로 알고 있는데요..
소설같은 자바인가.. 거기 예제를 하나 보면
classMimicextendsObjectimplementsCloneable{//Cloneable명시
privateintid;
privateStringname;
publicMimic(intid,Stringname){...}
//clone()메서드의재정의
publicObjectclone()throwsCloneNotSupportedException{
returnsuper.clone();//Object의clone()을이용한메모리복제
}
//toString()메서드의재정의
publicStringtoString(){ ...}
}//endofMimicclass
publicclassMimicMain{
publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{
Mimicm=newMimic(1000,호랑이);//객체생성
Mimicn=(Mimic)m.clone();//복사를위한메서드사용
System.out.println(m.hashCode()++m);//참조값출력
System.out.println(n.hashCode()++n);//참조값출력
}//endofmain
}//endofMimicMainclass 이렇게 되어있는데요 super 참조자를 사용해서 clone()메소드를 호출하고 있습니다.
근데 제가 super를 제외하고 그냥 return clone()만 해줘도
결과는 동일하게 나오는것 같던데..
super.clone()과 그냥 clone()차이점 (super는 상위 클래스를 뜻한다..이런 개념적인거는 말구요)
을 알고 싶습니다.
그리고 다른 한책을 보니
Product p = (Product)clone();
이런식으로 구현을 했던데
저렇게 해도 복사가 되나요?
그러니까.. public class Product implements Cloneable {
.....
public Product createClone(){
Product p = (product)clone();
return p;
}
}
Main에서는
Product p = new Product();
Product m = p.createClone();
이런식으로..Product p = (product)clone(); 라고 해준 것만으로도
복사가 되는지 궁금합니다..질문이 좀...두서가 없네요..^^;;
답변 꼭 부탁드립니다.
그럼~