작성
·
32
0
강의 중에 사용하신 init 관련 코드에서 하나 궁금한 점이 있습니다.
BaseController
의 Awake()
안에서 _init = true
를 먼저 설정한 다음 init()
을 호출하게 되면, init()
안에서는 이미 _init == true
상태라서 실제 초기화 로직이 수행되지 않고 false
만 반환하게 되는 것 같습니다.
그런데 MonsterController
에서는 base.init()
이 true일 때 return 하도록 돼 있어서, 결과적으로 자식 클래스의 초기화 로직이 실행되지 않을 수도 있어 보인다는 생각이 들었습니다. 혹시 의도된 흐름이 맞는지, 아니면 _init = true
설정 위치나 분기 조건 쪽에 조정이 필요한 부분이 있는지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 코딩님.
상속 구조 내에서 Awake()
와 Init()
함수의 동작 흐름에 대한 질문을 주셨습니다. 이러한 흐름 문제는 객체 지향 프로그래밍에서 자주 발생할 수 있는 부분으로, 기본적으로 Init()
함수가 어떻게 동작해야 하는지, 그리고 base.init()
호출 시 의도된 초기화 로직이 제대로 실행되고 있는지에 대해 명확히 이해하는 것이 중요합니다.
질문 주신 사항에서, BaseController
의 Awake()
에서 _init
이 true
로 설정된 후 Init()
이 호출되면, 이미 초기화된 상태라 간주되어 자식 클래스의 초기화 로직이 실행되지 않는다는 문제를 지적하셨는데요. 이를 방지하기 위해선 _init
플래그를 설정하는 위치를 재조정하거나, 초기화 조건을 면밀히 확인해 보는 것이 필요할 수 있습니다.
아래는 관련된 참고 자료로, 유사한 문제를 다룬 질문과 답변들입니다:
이와 관련하여, 예를 들어 Init()
함수의 호출 위치와 초기화 플래그가 기본 클래스와 파생 클래스에서 어떻게 관리되고 있는지, 그리고 이러한 구조가 의도된 대로 잘 동작하고 있는지를 점검할 필요가 있습니다.
질문 주신 상황을 해결하기 위해 다음과 같은 점검이 필요할 수 있습니다:
- _init
플래그가 언제 어떻게 설정되고 초기화가 수행되는지를 철저히 검사해 보세요.
- base.init()
호출 시 상위 클래스에서의 초기화가 자식 클래스에서의 초기화를 방해하지 않도록 하려면, 초기화 순서나 조건문을 조정해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.