[Java] Deep Copy & Shallow Copy
1. 개념(Concept)
2. 소스 코드
private String accnum;
private int balance;
public void setNum(String accnum)
{
this.accnum = accnum;
}
public String getNum()
{
return this.accnum;
}
protected Object clone()
{
try{
Account account = (Account)super.clone();
return account;
}
catch(CloneNotSupportedException e)
{
e.printStackTrace();
}
return null;
}
}
Source) Account.java
{
public static void deepcopy()
{
Account source = new Account();
source.setNum("111");
Account target = (Account)source.clone(); // clone()은 Overliding으로 구현.
System.out.println( "소스원본:" + source.getNum() );
System.out.println( "대상-깊은 복사:" + target.getNum() );
System.out.println( "원본값 계좌번호 변경 333\n" );
source.setNum("333");
System.out.println( "소스원본:" + source.getNum() );
System.out.println( "대상-깊은 복사:" + target.getNum() + "\n" );
}
public static void shallowcopy()
{
Account source = new Account();
source.setNum("111");
Account target = source;
System.out.println( "소스원본:" + source.getNum() );
System.out.println( "대상-얇은 복사:" + target.getNum() );
System.out.println( "원본값 계좌번호 변경 333\n" );
source.setNum("333");
System.out.println( "소스원본:" + source.getNum() );
System.out.println( "대상-얇은 복사:" + target.getNum() + "\n" );
}
public static void main(String args[])
{
System.out.println("--- 1.깊은 복사------------------");
deepcopy();
System.out.println("--- 2.얇은 복사------------------");
shallowcopy();
}
}
Main Source) Program.java
3. 동작 결과
이해가 되었으면 합니다.^^
[첨부(Attachment)]
'소프트웨어(SW) > Sun Sys - Java' 카테고리의 다른 글
[Java] API 8.0 사이트 (0) | 2015.06.01 |
---|---|
[Java] Swing - JTable의 열 헤더 출력(Column Header) - JScrollPane 이용 (0) | 2015.06.01 |
[Java] IceCream(아이스크림) - Class 구현 (4) | 2015.04.05 |
[Eclipse] 자동완성(코드 완성 기능)이 안될 때 (6) | 2015.02.17 |
[Java] 행 바꾸기 (6) | 2014.10.24 |