인프런 커뮤니티 질문&답변

도토리님의 프로필 이미지
도토리

작성한 질문수

김영한의 실전 자바 - 중급 1편

내부 클래스

바깥 인스턴스만 생성하는 경우

작성

·

112

0

InnerOuter outer = new InnerOuter();
InnerOuter.Inner inner = outer.new Inner();

바깥 클래스와 내부 클래스의 인스턴스를 각각 생성하는 코드입니다. 만약 위 코드에서 두 번째 코드 없이 첫 번째 코드만 작성한다면 아래 그림에서 바깥 인스턴스의 참조를 보관하는 곳에 null이 저장되는 건가요?

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

도토리님의 질문에 대해, 같은 강의 내에서 유사한 주제를 다룬 질문이 있어 이를 안내해드립니다.

질문의 핵심은 바깥 클래스 인스턴스를 생성했을 때 내부 클래스 인스턴스에 대한 참조가 어떻게 되는지에 관한 것입니다. Java에서 바깥 클래스의 인스턴스를 생성하더라도, 내부 클래스(Non-static nested class or Inner class)의 인스턴스는 자동으로 생성되지 않습니다. 내부 클래스의 인스턴스를 생성하려면, 명시적으로 바깥 클래스의 인스턴스를 사용해서 내부 클래스의 인스턴스를 생성해야 합니다.

예를 들어, 바깥 클래스 Outer와 내부 클래스 Inner가 있을 때, Inner 클래스의 인스턴스를 만들려면 먼저 Outer의 인스턴스를 만들고, 그 인스턴스를 통해 Inner 클래스의 인스턴스를 생성해야 합니다. 따라서, 질문에서 언급한 것처럼 바깥 클래스 인스턴스만 생성하고 내부 클래스 인스턴스를 생성하지 않았다면, 바깥 인스턴스의 참조를 보관하는 공간에 null이 저장되는 것이 아닌, 단순히 내부 클래스 인스턴스가 생성되지 않은 상태가 됩니다.

질문에 대한 보다 구체적인 답변은 이전에 다른 학습자가 비슷한 주제로 질문했던 내용에서 찾을 수 있습니다:

위 링크에서는 내부 클래스와 외부 클래스 인스턴스의 관계 및 생성 방법에 대해 설명하고 있습니다. 내부 클래스 인스턴스를 생성하기 위해서는 반드시 외부 클래스의 인스턴스가 필요하며, 이는 직접적으로 생성 과정에서 명시해야 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

도토리님의 프로필 이미지
도토리

작성한 질문수

질문하기