class Person2{
var name: String = ""
var age: Int = 0{
didSet{
print("Person2 age: \(self.age)")
}
}
var koreanAge: Int{
return self.age + 1
}
var fullName: String{
get{
return self.name
}
set{
self.name = newValue
}
}
}
class Student2: Person2{
var grade: String = "F"
override var age: Int{
didSet{
print("Student2 age : \(self.age)")
}
}
override var koreanAge: Int{
get{
return super.koreanAge
}
set{
self.age = newValue - 1
}
//didSet{} 프로퍼티 접근자와 프로퍼티 감시자는 동시에 재정의 할 수 없다
}
override var fullName: String{
didSet{
print("Full Name: \(self.fullName)")
}
}
}
let terry: Person2 = Person2()
terry.name = "Terry"
terry.age = 20 // Person2 age: 20 출력
terry.fullName = "Terry Koo"
let john: Student2 = Student2()
john.name = "john"
john.age = 30 // Person2 age: 30 <-부모 감시자
// Student2 age : 30 <-자식 감시자
john.koreanAge = 15 // Person2 age: 14 <-부모 감시자
// Student2 age : 14 <-자식 감시자
john.fullName = "John Lee" // Full Name: John Lee 출력
*프로퍼티의 감시자를 재정의하더라도 조상클래스에 정의한 감시자도 동작한다
'iOS > Swift' 카테고리의 다른 글
[Swift] 일급객체란? (0) | 2022.04.11 |
---|---|
[Swift] Optional(옵셔널)도 결국 Enum type(열거형 타입)이다 (0) | 2022.03.26 |
[Swift] 열거형 케이스 패턴에서 let 위치 차이점 (0) | 2022.03.25 |
[Swift] 프로퍼티(저장, 연산, 타입, 감시자) (0) | 2022.03.18 |
[Swift] enum(열거형) (2) | 2022.02.21 |