패스트캠퍼스) ios 개발 챌린지

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 26회차 미션

student513 2020. 11. 27. 11:56

상속을 하면 좋은 경우는 다음과 같다.

 

  1. single responsibility: 각 클래스는 하나의 책임만 가지면 된다
  2. type safety: 클래스 간 구분을 명확히 지어줘야할 때
  3. shared based class: 다자녀: 기본 동작이 다양하게 구현되어야하는 경우
  4. extensibility: 확장성이 필요한 경우
  5. identity: 정체성을 파악하기 위해서. 어떤 인스턴스인지 확인하려고 상속받을 수 있다.

클래스를 만들면 프로퍼티의 초기값을 설정해줄 생성자가 필요하다.
모든 stored property는 initialized되어야한다. 자식 클래스 -> 부모 클래스 순서로 init 해야한다
부모 클래스 프로퍼티까지 세팅 완료 후, 프로퍼티와 메소드의 사용이 가능하다

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