inflearn logo
강의

Course

Instructor

Introduction to Java Programming Course (renewed version) - From beginner to developer employment!!

Inner classes and anonymous classes

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

180

ehdgus80540711

1 asked

0

내부클래스 수업때

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

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

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

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

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

무슨 차이죠?

java

Answer 1

2

anysweetimes0643

설명을 해드리자면

객체를 만들때 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