• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

22.07.02 17:35 작성 조회수 199

1

 

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

 

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

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

 

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

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

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

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

 

답변 1

답변을 작성해보세요.

1

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

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

 

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

 

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

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