1단계 초기화
- 자신 및 부모 클래스의 모든 프로퍼티 기본값 설정하기
class A {
let a: Int
init() {
self.a = 3
}
}
class B: A {
let b: Int
init() {
self.b = 4
super.init()
}
}
- 인스턴스는 초기화 과정에서 모든 프로퍼티에 기본값을 할당해야 함.
- 1단계 초기화는 부모 클래스 및 그를 상속하는 자식 클래스가 각자의 기본 프로퍼티를 설정하는 과정.
- 자식 클래스의 경우 자기 자신의 프로퍼티에 기본값을 먼저 지정하고, 부모 클래스의 지정 초기자를 호출해 부모 클래스 프로퍼티의 기본값을 지정해주어 인스턴스의 모든 프로퍼티에 기본값을 설정한다.
2단계 초기화
- 1단계 초기화가 끝나고 난 이후, 초기값 커스텀 가능
class A {
let a: Int
init() {
self.a = 3
}
func some() {}
}
class B: A {
let b: Int
init() {
self.b = 4
super.init()
a = 6
}
}
- 모든 프로퍼티의 초기화가 끝났기 때문에 self 인스턴스에 접근 가능해지고 인스턴스 프로퍼티 수정 / 메소드 호출이 가능해짐
- 2단계 초기화는 super.init()으로 인해 원하지 않는 값으로 초기화가 진행된 경우 수정할 수 있는 기회를 준다.