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

네네몬님의 프로필 이미지

작성한 질문수

자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!

내부 클래스와 익명 클래스

내부클래스 객체선언질문

작성

·

166

2

'OutterClass.InnerClass in = oc. new InnerClass();'

'OutterClass.SInnerClass si = new OutterClass.InnerClass();'

이렇게 선언하는 부분이이 다른데 이유가 있나요?

static내부클래스 선언할때 oc.new SInnerClass(); 이렇게 선언하면 안되나요?

답변 1

0

밑에 질문의 답변과 비슷한 내용이 될 것 같습니다. 생성하신 in객체는 OuterClass안에 있는 모든 객체가 사용할 수 없습니다. 그러나 static 클래스는 다르죠. in 객체는 OuterClass.InnerClass에서 밖에 사용할 수 없는 반면 static Class는 OuterClass 안에있는 모든 클래스들이 공유할 수 있어야 합니다. 그래서 OuterClass.SInnerClass로 따로 설정해주는 것입니다. oc.new SInnerClass()로 설정한다면 OuterClass에서 만든 객체 oc에 한정되어 객체가 생성될 것이기 때문에 static으로서의 의미가 사라질 것입니다.