지정생성자와 편의생성자 글을 먼저 보고오시는걸 추천드립니다
https://jmin-developer.tistory.com/31
상속관계에서 생성자 위임 규칙
- 자식클래스의 지정생성자는 부모클래스의 지정생성자를 반드시 호출해야함
- 편의생성자는 동일한 클래스의 다른 편의 혹은 지정생성자를 호출해야하고 궁극적으로는 부모클래스의 지정생성자를 호출해야함
- 자식, 부모 클래스의 모든 저장속성 값이 초기화 되야함
class AClass { // 부모클래스
var x: Int
var y: Int
init(x: Int, y: Int) { // 부모클래스의 지정생성자
self.x = x
self.y = y
}
}
class BClass: AClass { // 자식클래스
var z: Int
init(x: Int, y: Int, z: Int) { // 자식클래스의 지정생성자
self.z = z // 반드시 자식클래스의 저장속성 초기화를 먼저 해야함
super.init(x: x, y: y) // 부모클래스의 지정생성자 호출
// self.z = z (본인 클래스의 저장속성을 부모클래스 지정생성자 호출보다 늦게할수는 없다
// 부모클래스의 지정생성자가 호출이 되면
// 부모클래스의 속성 혹은 메서드에 접근가능 (이때는 super가 아닌 self로 접근)
self.y = 1
}
}
'Swift > 문법' 카테고리의 다른 글
[Swift] 초기화(Initialization)와 생성자(Initializer) (5/5) 필수생성자, 실패가능생성자, 소멸자 (0) | 2022.04.09 |
---|---|
[Swift] 초기화(Initialization)와 생성자(Initializer) (4/5) 생성자 재정의 (0) | 2022.04.09 |
[Swift] 초기화(Initialization)와 생성자(Initializer) (2/5) 지정생성자와 편의생성자 (0) | 2022.04.09 |
[Swift] 초기화(Initialization)와 생성자(Initializer) (1/5) (0) | 2022.04.03 |
[Swift] 상속 및 재정의(3/3) 메서드의 재정의 (0) | 2022.04.03 |