類(lèi)型轉(zhuǎn)換就是將一個(gè)類(lèi)型轉(zhuǎn)換為另一個(gè)類(lèi)型蜕企,類(lèi)型轉(zhuǎn)換只能發(fā)生在子父類(lèi)之間栈妆。
其實(shí)類(lèi)型轉(zhuǎn)換就是java里邊的父類(lèi)的引用指向了子類(lèi)的對(duì)象愕提,有多態(tài)的嫌疑锐墙,哈哈哈。
類(lèi)型轉(zhuǎn)換操作符有兩種形式:as? 和 as! 构罗。
as? 操作符將對(duì)象轉(zhuǎn)換為目標(biāo)類(lèi)型的可選類(lèi)型铜涉,轉(zhuǎn)換失敗返回nil
as! 操作符會(huì)強(qiáng)制解包,轉(zhuǎn)換失敗會(huì)觸發(fā)運(yùn)行時(shí)錯(cuò)誤
class Person{
var name:String
init (name:String){
self.name = name
}
}
class Teacher:Person{
var school:String
init (name:String, school:String){
self.school = school
super.init(name: name)
}
}
class Stutent:Person{
var age:Int
init (age:Int, name:String){
self.age = age
super.init(name: name)
}
}
let tea = Teacher(name:"老師", school:"北工大")
let stu = Stutent(age:23, name:"學(xué)生")
let array = [tea, stu];
for item in array{
if let temp=item as? Teacher{
print("1",temp.school)
}else if let temp=item as? Stutent{
print("2",temp.age)
}
}