스위프트에는 타입 내부에 타입을 정의하고 구현할 수 있다. 이것을 중첩 타입(Nested Type)이라고 한다.
class Person {
enum Job {
case jobless, programmer, student
}
var job: Job = .jobless
}
let personJob: Person.Job = .jobless
class Student: Person {
enum School {
case elementary, middle, high
}
var school: School
init(school: School) {
self.school = school
super.init()
self.job = .student
}
}
// 자식클래스에서 부모클래스 중첩타입에 접근가능
let studentJob: Student.Job = .student
let student = Student(school: .middle)
// student.job // 부모클래스 프로퍼티에도 접근 가능
// student.school