구조체 vs 클래스
구조체를 사용해야하는 경우
클래스를 사용해야하는 경우
클래스의 상속에 대해 알아보자
Person을 상속받은 Student 클래스
struct Grade {
var letter: Character
var points: Double
var credits: Double
}
class Person {
var firstName: String
var lastName: String
init(firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
func printMyName() {
print("My name is \(firstName) \(lastName)")
}
}
class Student: Person {
var grades: [Grade] = []
}
// 학생인데 운동선수
class StudentAthlete: Student {
var minimumTrainingTime: Int = 2
var trainedTime: Int = 0
func train() {
trainedTime += 1
}
}
// 운동선인데 축구선수
class FootballPlayer: StudentAthlete {
var footballTeam = "FC Swift"
override func train() {
trainedTime += 2
}
}
위에서부터 클래스를 상속받고 있다. 자식 클래스는 부모 클래스의 프로퍼티와 메소드를 참조할 수 있다.
반대방향은 성립하지 않는다.
var athelete1 = StudentAthlete(firstName: "Yuna", lastName: "Kim")
var athelete2 = FootballPlayer(firstName: "Heung", lastName: "Son")
// FootballPlayer는 StudentAthlete을 상속받은 것이므로 할당이 가능하다
// as StudentAthlete은 athelete2를 StudentAthlete에 할당한다고 명시한 것
// uppercast
athelete1 = athelete2 as StudentAthlete
// downcast
// athelete1을 FootballPlayer로 다운한다.
if let son = athelete1 as? FootballPlayer {
print("--> team:\(son.footballTeam)")
}
올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq
'패스트캠퍼스) ios 개발 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 27회차 미션 (0) | 2020.11.28 |
---|---|
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 26회차 미션 (0) | 2020.11.27 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 24회차 미션 (0) | 2020.11.25 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 23회차 미션 (0) | 2020.11.24 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 22회차 미션 (0) | 2020.11.23 |