[TIL]0822_swift Initializer(생성자)

JJ_u·2021년 8월 22일
0

TIL

목록 보기
7/7
post-thumbnail
post-custom-banner

Class

Initializer(생성자)

부모, 자식 클래스 형태가 같음

var athlete1 = StudentAthlete(firstName: "Yuna", lastName: "Kim")
var athlete2 = FootballPlayer(firstName: "Heung", lastName: "Son")

상속된 자식클래스는 부모와 다른 생성자로 만들 수 있다.

var athlete1 = Student(firstName: "Mike", lastName: "Kim")
var athlete2 = StudentAthlete(sports: ["Baseball"], firstName: "Jay", lastName: "Lee")

Inheritance(상속)

상속된 자식 클래스의 경우에도 생성시점에는 자신이 갖고 있는 property뿐만 아니라 부모의 property 값도 설정해줘야 한다

SubClass ▶️ SuperClass

2-phase Initialization(클래스 생성시 2가지 단계)

안지킬 시 원하는대로 동작 ❌, 버그 발생

  • Phase 1(자식 class property부터 initialization)

    Phase 1이 끝나기 전까지 어떤 property나 method를 쓸 수 없음

    Person ◀️ Student ◀️ StudentAthlete(◀️super.init(...), self.sports=...)

  • Phase 2

    부모 class의 property를 다 세팅하고 나서(phase1에서) 쓸 수 있다.

    Person ▶️ Student ▶️ StudentAthlete (◀️ self.train())

designated vs. convenience Initialization(지정, 간편)

  • DI는 자신의 부모의 DI를 호출해야 한다.
  • CI는 같은 클래스의 다른 이니셜라이저를 꼭 하나 호출해야 한다.
  • CI는 궁극적으로는 DI룰 호출해야 한다.
    • 주 I는 DI, 부 I는 CI 이 부 I는 다른 I를 호출하게 되어 있다

🍎 느낀점

  • 부모 ▶️ 자식, 자식 ▶️ 부모?

https://fastcampus.co.kr/dev_online_iosapp

profile
개발자 만들기
post-custom-banner

0개의 댓글