안녕하세요 ~ 여러분들은 init 메소드 안에서의 순서를 생각하시고 쓰시고 계신가용
저는 솔직히 아니었습니다. 아무생각없이 늘 타이밍에 실행하고 있었어요.
전직장에서의 코드리뷰에서 팀 멤버가 super.init() 타이밍이 괜찮다고 생각해? 라고 코멘트를 남겨주었고,
그 코멘트를 계기로 또 하나를 배우게 되었습니다. (코드리뷰 아주 중요해요😖)
SuperCar 이라는 부모 클래스를 ChildCar 라는 클래스가 상속했다고 생각해봅시다.
class ChildCar: SuperCar {
var smallEngine: Engine
init(smallEngine: Engine) {
// - A
// super.init()
self.smallEngine = smallEngine
// - B
// super.init()
}
}
자식클래스의 초기화에서 부모 클래스의 초기화는 A와 B 중 어느 타이밍에 실행되어야 할까요?
🏵
B 입니다.
부모 클래스의 초기화로부터 발생할 수 있는 문제를 없애기 위해 자식 클래스의 초기화가 끝난 후에 부모 클래스의 초기화를 실행해야 합니다.
–
상황에 따라 부모 클래스의 초기화된 값이 자식 클래스에 영향을 줄 땐 A로 판단할 수도 있다고 생각합니다