본문 바로가기

cs(with 매일메일)

[250925목] 얕은 복사와 깊은 복사에 대해서 설명해주세요.

자바에서 객체를 복사할때, 얕은 복사 깊은 복사 2가지 방법이 있다. 

class Book {
	private String name;
    private Author author;
    
    public Book shallowCopy() { // 얕은 복사
    	return new Book(this.name, this.author);
    }
    
    public Book deepCopy(){ // 깊은 복사
    	Author copiedAuthor = new Author(this.author.getName());
        return new Book(this.name, copiedAuthor);
    }
}

class Author {
	private String name;
}

 

얕은 복사는 객체의 주소를 복사 > 복사된 author.name을 변경하면 원본 book의 저자이름도 바뀜(같은 곳을 바라보니까) 

깊은 복사를 값 자체를 복사