Swift 的型別檢查與轉換運作於類別繼承階層中。以典型範例:
Person:根類別Student:Person 的直接子類別Worker:Person 的直接子類別| 操作 | 關鍵字 | 用途 |
|---|---|---|
| 型別檢查 | is | 回傳 Bool,判斷實例是否為特定子類別 |
| 向下轉型 | as? / as! | 條件/強制轉換為子類別型別 |
| 向上轉型 | as | 隱式轉換為父類別型別(永遠安全) |
let person: Person = Student(name: "Tony", age: 18, school: "清華大學")
// 型別檢查
if person is Student {
print("這是學生")
}
// 條件向下轉型 (可選綁定)
if let student = person as? Student {
print("學校:\(student.school)")
}
// 強制向下轉型 (確定型別時使用)
let worker = person as! Worker // 執行期崩潰若 person 非 Worker
建議優先使用
as?搭配if let或guard let,避免執行期崩潰,符合 Swift 安全第一的設計哲學。