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

woojin126님의 프로필 이미지
woojin126

작성한 질문수

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

10강. 코틀린에서 상속을 다루는 방법

안녕하세요 질문이 있습니다!

작성

·

246

1

 

안녕하세요~   질문이있는데용

 

OPEN 키워드를 사용하지않고 사진의 코드를 실행시키면

값이 300으로 나오게되는데요~

 

Derived(300) 으로 부모가 호출이되고

자식의 프로퍼티가( override )가 아니기 때문에  

부모의 초기화블록이 실행되면서 자식의 초기화되지 않는 init  블럭에 접근하지 않고

부모의 init에서 처리하기 때문에 
300이 재대로 출력되는건가요?

 

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요 woojin126님!! 네네 맞습니다~!! 정확하신 분석입니다 ㅎㅎㅎㅎㅎ

프로퍼티에 override를 붙이지 않게 되면 '이름은 같더라도' 부모의 프로퍼티가 아닌 자식의 프로퍼티 (Derived의 프로퍼티) 이기 때문에 

 

부모의 init block에서는 부모의 프로퍼티를 부르게 되고, 부모의 프로퍼티는 Derived 클래스의 생성자 -> Base의 생성자를 타고 넘어온 이후이기 때문에 300으로 나오게 되는 것입니다!

 

크으~~ 다양한 case를 확인하시다니 정말 대단하십니다!!

혹시나 또 질문 있으시면 편하게 남겨주세요~!!! 감사합니다 ㅎㅎㅎ

woojin126님의 프로필 이미지
woojin126

작성한 질문수

질문하기