• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

내부클래스수업때 객체생성에 관하여

18.09.17 14:22 작성 조회수 90

0

내부클래스 수업때

왼쪽 화면의 객체생성하는 코드를 보면

OuterClass.InnerClass in = oc.new InnerClass(); 라고 되어있는걸 볼 수 있습니다.

OuterClass.InnerClass in = new oc.InnerClass(); 가 뭔가 더 직관적인것 같은데 이건 틀린표현입니까?

밑의 static 클래스인 SinnerClass의 생성코드는

OuterClass.SInner si = new OuterClass.SInnerClass();라고 되어있네요

무슨 차이죠?

답변 1

답변을 작성해보세요.

2

안중원님의 프로필

안중원

2019.01.11

설명을 해드리자면

객체를 만들때 new라는 키워드를 사용하여 인스턴스로 만들잖아요?

잘 생각해보시면 왜 new의 위치가 저기인지 이해가 가실겁니다.

OuterClass.InnerClass in = oc.new innerClass();

라는 코드는 OuterClass.InnerClass 의 자료형을 가진 in 변수에 이미 할당받은 변수 oc의 클래스만 저장하겠다 라는 뜻입니다.

OuterClass.InnerClass in = new oc.InnerClass();로 코드를 작성한다면

이미 할당받은 oc 마저도 재 할당하라는 뜻의 new가 되겠죠?

oc의 자료형은 OuterClass입니다.

Outer.Class.InnerClass는 더 큰범위인 OuterClass를 담을수없습니다.

그러므로 강사님이 말씀해주신것 처럼 new OuterClass.InnerClass(); 로 쓰셔야합니다.