Inflearn コミュニティ Q&A
clone() 메서드를 재정의함으로써 Deep copy로 구현한다로 이해하면 될까요?
解決済みの質問
作成
·
120
0
안녕하세요!
한가지 아리송한 부분이 있어 질문 드립니다:)
20:30 정도에 clone()이 등장하는데 clone()을 그냥 사용하는 것이 아니라 '재정의 하여 사용함으로써 Deep copy가 된다'는 의미로 이해하면 될까요?
クイズ
클래스 생성자의 주된 역할은 무엇일까요?
클래스 구조를 정의합니다.
객체의 상태를 초기화합니다.
객체를 메모리에서 해제합니다.
계산을 수행하는 메서드를 만듭니다.
回答 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 형씌님!
질문하신 내용은 clone() 메서드와 관련된 중요한 개념을 정확히 짚어주셨습니다. 먼저 기본적으로 Java의 clone() 메서드는 얕은 복사를 수행합니다. 이 메서드는 해당 객체의 모든 필드 값을 그대로 복사하여 다른 메모리 위치에 동일한 데이터를 가진 객체를 만듭니다. 그러나 필드가 참조 타입인 경우 그 필드의 참조값만 복사되므로 내부의 객체 구조는 그대로 이어집니다.
따라서 deep copy를 원한다면 clone() 메서드를 오버라이드(재정의)하여 객체의 모든 필드, 특히 중첩된 객체들까지 새로운 인스턴스를 생성하고 그 참조를 복사해줘야 합니다. 이를 통해 원본과 복사본 객체가 완전히 독립적인 구조가 되는 것입니다.
관련하여 더 깊이있는 설명을 원하신다면 다음의 유사한 질문들을 참고하실 수 있습니다:
- 상속과 오지랖의 콜라보 예제에서 clone() 메서드에 대한 문의드립니다
- Deep Copy 부문 관련 질문
이 두 게시물에서는 clone() 메서드에 대한 오버라이드 및 깊은 복사에 대한 설명이 포함되어 있어, 형씌님의 이해에 많은 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





