내부클래스수업때 객체생성에 관하여
180
1 asked
내부클래스 수업때
왼쪽 화면의 객체생성하는 코드를 보면
OuterClass.InnerClass in = oc.new InnerClass(); 라고 되어있는걸 볼 수 있습니다.
OuterClass.InnerClass in = new oc.InnerClass(); 가 뭔가 더 직관적인것 같은데 이건 틀린표현입니까?
밑의 static 클래스인 SinnerClass의 생성코드는
OuterClass.SInner si = new OuterClass.SInnerClass();라고 되어있네요
무슨 차이죠?
Answer 1
2
설명을 해드리자면
객체를 만들때 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(); 로 쓰셔야합니다.
서식 문자 실습 중 콘솔 결과값 글자 깨짐
0
554
1
19-4 : super 클래스 부분에서
0
377
1
비트를 뒤에서부터 읽으셔서 궁금해서 질문드립니다!
1
649
1
배열예제 오류
0
389
1
GC 동작시기가 궁금합니다.
0
373
0
자바 18버전으로 다운받아도 되나요?
0
533
1
클래스 생성과 관련하여 질문 있습니다
0
263
0
형변환시 신규 메모리가 할당 되는지
0
348
0
Socket을 null로 처음에 선언해주는 이유가 뭘까요?
0
300
0
반환값 용도
0
335
1
블로그 작성
0
316
0
삼항연산자 잘못 적으셨어요
0
264
1
어느것부터 다운로드를 해야하는지 좀 막히네요
0
350
1
inputStream.read()질문드립니다
0
325
1
System.out.println("i + j = " + (i+j); 이렇게 쓰는 이유가 뭔가요? " "i + j " = (i +j)라고 쓸수 있는거 아닌가요?
0
366
1
<for문> 예시 작성시 에러발생 질문드립니다
0
576
2
이해가 안가는 부분이 있습니다.. 선생님들.. 도와주세요..!!
0
314
1
인터페이스를 사용 하는 이유가 무엇인가요?..
0
737
1
혹시 영상 만드시고 업로드 전 확인 안하시나요..? 잡음..
1
302
1
이해가 안가는게 있습니다
0
308
2
jdk-16.0.1은 jre가 없이 jdk만 설치되는게 정상인가요?
0
494
1
메모장을 실행하실때
0
307
1
강의 중 말씀해주신 형변환된 코드가 알고 싶어요.
0
224
2
메모장이안돼요 처음에
0
273
0

