상속을 하면 좋은 경우는 다음과 같다.
- single responsibility: 각 클래스는 하나의 책임만 가지면 된다
- type safety: 클래스 간 구분을 명확히 지어줘야할 때
- shared based class: 다자녀: 기본 동작이 다양하게 구현되어야하는 경우
- extensibility: 확장성이 필요한 경우
- identity: 정체성을 파악하기 위해서. 어떤 인스턴스인지 확인하려고 상속받을 수 있다.
class StudentAthlete: Student {
var minimumTrainingTime: Int = 2
var trainedTime: Int = 0
var sports: [String]
init(firstName: String, lastName: String, sports: [String]) {
// Phase 1
self.sports = sports
super.init(firstName: firstName, lastName: lastName)
// Phase 2
self.train()
}
func train() {
trainedTime += 1
}
}
super.init은 부모클래스의 firstName과 lastName을 자식클래스 생성 시 자동으로 물려받는 기능을 한다.
minimumTrainingTime과 trainedTime은 미리 초기화를 진행하였고
sports는 선언을 통해 받아온 파라미터를 통해 초기화가 될 것이다
여기까지가 phase 1에 대한 것이고
이 작업을 마친 후에야 phase2로 돌입하여
메소드 train()을 호출할 수 있다.
init 함수 내에서 self.train()으로 호출된 것은 해당 클래스가 생성되자마자 실행한다는 뜻이다
올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq
'패스트캠퍼스) ios 개발 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 28회차 미션 (0) | 2020.11.29 |
---|---|
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 27회차 미션 (0) | 2020.11.28 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 25회차 미션 (0) | 2020.11.26 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 24회차 미션 (0) | 2020.11.25 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 23회차 미션 (0) | 2020.11.24 |