/*
클론을 이용한 참조 타입의 복사본 만들기
- Object의 clone()을 오버라이딩한다.
javap java.lang.Object는 protected native java.lang.Object clone() throws
java.lang.CloneNotSupportedException;을 보여준다. 참고로 clone()의 리턴 타입은 Object이다.
*/
class Student implements Cloneable
{
private String name;
private int id;
private String addr;
public Student(String name, int id, String addr)
{
this.name = name;
this.id = id;
this.addr = addr;
} // Student
public String getAddr()
{
return addr;
}
public int getId()
{
return id;
}
public String getName()
{
return name;
}
public void setAddr(String string)
{
addr = string;
}
public void setId(int i)
{
id = i;
}
public void setName(String string)
{
name = string;
}
public String toString()
{
return name+" "+id+" "+addr;
} // toString
public Object clone()
{
try
{return super.clone();}
catch(CloneNotSupportedException cnse)
{ return this;}
} //clone
}
public class CloneMain
{
public static void main(String[] args)
{
Student st = new Student("KHJ",6,"부산광역시 해운대구");
System.out.println("1"+st);
Student st1 = st; // reference assignment copy
st1.setAddr("서울 특별시");
st1.setId(3);
System.out.println("2"+st);
Student sts = (Student) st.clone(); // 얕은 복사
System.out.println("3"+sts);
sts.setAddr("대구 광역시");
sts.setId(5);
System.out.println("4"+st);
System.out.println("5"+sts);
}
}
'IT_Programming > Java' 카테고리의 다른 글
인터페이스 Comparator를 이용한 순서 정렬하기 (Array.sort) (0) | 2007.07.05 |
---|---|
자바 컬렉션 프레임워크 [JCF] (0) | 2007.07.02 |
추상 클래스와 인터페이스 (0) | 2007.06.29 |
native method 정의 및 구현 (0) | 2007.06.28 |
ZIP/JAR 엔트리의 생성 제어하기 (0) | 2007.06.28 |