티스토리 뷰

Swift

Initializer

강경 2021. 1. 2. 19:28
728x90
반응형

상속을 받은 클래스에서 생성자를 만들 때는, 부모의 생성자를 호출시켜야 한다.

super 키워드를 통해 접근할 수 있다.

 

* 2-phase Initialization : 클래스 생성시의 두 단계 -> 보다 안정적인 코드를 작성하기 위해 지켜야 한다.

 

phase1. 모든 property는 initialized 되어야 한다.

(init할 때, 자식에게만 있는 sports를 먼저 지정해준 뒤 부모 init을 호출시킨다.)

 

phase2. phase1을 모두 끝낸 뒤에야 property와 method의 사용이 가능해진다.

 

 

- designated Initializer : 주 initializer

- convenience Initializer : 부 initializer (initializer가 너무 길때 유용하게 사용 가능 + 원하는 것만 딱 받아서 사용이 가능해짐)

 

* designated Initializer vs convenience Initializer

1. DL는 자진의 부모의 DL를 호출해야 한다.

2. CL는 같은 클래스의 Initializer를 꼭 하나 호출해야 한다.

3. 2번에 의해, CL는 궁극적으로 DL를 호출해야 한다.

728x90
반응형

'Swift' 카테고리의 다른 글

클로저 표현 (Closure Expressions)  (0) 2021.03.23
이름 짓기  (0) 2021.02.13
Inheritance  (0) 2021.01.02
Struct, Class 언제 무엇을 쓸까  (0) 2020.12.28
Class  (0) 2020.12.28