-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
내부클래스수업때 객체생성에 관하여
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();라고 되어있네요
무슨 차이죠?
답변을 작성해보세요.
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(); 로 쓰셔야합니다.
답변 1