지정생성자와 편의생성자 글을 먼저 보고오시는걸 추천드립니다
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
}
}