부모, 자식 클래스 형태가 같음
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")
상속된 자식 클래스의 경우에도 생성시점에는 자신이 갖고 있는 property뿐만 아니라 부모의 property 값도 설정해줘야 한다
SubClass ▶️ SuperClass
안지킬 시 원하는대로 동작 ❌, 버그 발생
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())