작성
·
31
답변 2
0
안녕하세요?
그림으로 설명을 드리면 조금 더 이해가 수월할 것 같습니다 😊
먼저 새로운 Camera 객체를 2개 만들고 각각 cam1, cam2 라는 이름으로 이들을 참조, 즉 가리키도록 합니다.
Camera cam1 = new Camera(); // 파란색 타원
Camera cam2 = new Camera(); // 주황색 타원
이를 그림으로 표현하면 이렇습니다.
그런 다음, tempCam1 과 tempCam2 를 만들면서 각각 cam1 과 cam2 가 참조하고 있는 객체를 참조하도록 합니다.
Camera tempCam1 = cam1; // 파란색 타원 참조
Camera tempCam2 = cam2; // 주황색 타원 참조
위와 같이 코드를 작성하게 되면 실제 모습은 다음과 같습니다. tempCam1 은 cam1 과 같은 파란색 타원을, tempCam2 는 cam2 와 같은 주황색 타원을 가리키게 됩니다.
그런 다음에 cam1 과 cam2 에 null 을 대입함으로써 더 이상 기존의 객체를 참조하지 않도록 합니다.
cam1 = null;
cam2 = null;
그림으로 표현하면 이렇게 되지요. 단, 이때 tempCam1 과 tempCam2 는 여전히 파란색 타원과 주황색 타원을 참조하고 있습니다.
이제 다시 cam1 과 cam2 를 각각 tempCam1 과 tempCam2 가 참조하고 있는 객체를 참조하도록 합니다.
cam1 = tempCam1;
cam2 = tempCam2;
다시 이전의 상황과 동일한 모습이 되겠네요.
이후에는 cam1 또는 tempCam1 을 통해 파란색 타원의 객체에 접근할 수 있으며, cam2 또는 tempCam2 를 통해 주황색 타원의 객체에 접근할 수 있게 됩니다.
궁금증 해결에 도움되었으면 합니다 🙌
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 흰머리오목눈이님.
참조 관계를 끊고 다시 값을 입력하는 방법에 대한 질문을 주셨군요. 아래에 관련 질문과 그에 대한 답변 URL을 첨부해 드리겠습니다.
참고 : “강사님, 질문 하나 더 드립니다!”
질문에서 제시한 예제 코드에서 tempCam1
과 tempCam2
는 cam1
과 cam2
가 가리키고 있는 객체의 참조를 저장합니다. 따라서 cam1
과 cam2
를 null
로 설정해도 tempCam1
과 tempCam2
는 원래 객체를 계속 가리키고 있습니다. 간단히 말해서, tempCam1
과 tempCam2
가 null
이 되지 않는 이유는 이들이 cam1
과 cam2
에 할당된 객체의 참조를 독립적으로 보유하고 있기 때문입니다.
저는 질문자님의 이해를 돕고자 나도코딩님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 나도코딩님께서 답변해 주실 것입니다.
이해했습니다. 감사합니다.