as、as?、as!三者之间的区别
as、as?、as!三者之间的区别
class Dog: Canidae {
let name = "Jim"
}
class Canidae: Animat {
let kind = "Dog"
}
class Animat {
let subject = "Canidae"
}
- as 的作用:
- 类型声明
// 声明 num3 的类型为 CGFloat
let num3 = num as CGFloat
- 向上转换为父类类型
// 实例化子类
let dog = Dog()
// 将子类向上转换为父类类型 Canidae
let canidae = dog as Canidae
// 将子类向上转换为父类的父类类型 Animat
let animat = dog as Animat
- as? 的作用
- 向下转换为子类的可选类型
// 实例化父类
let animat = Animat()
// 将父类向下转换为子类的可选类型,重点要注意是转换为了子类型的可选类型,需要处理值为 nil 的情况
let canidae: Canidae? = animat as? Canidae
let dog: Dog? = animat as? Dog
- as! 的作用
- 向下转换为子类类型
// 实例化父类
let animat = Animat()
// 将父类向下转换为子类类型,和 as?的区别就是 as!转换后的类型不是可选类型
let canidae: Canidae = animat as! Canidae
let dog: Dog = animat as! Dog
本文标题:as、as?、as!三者之间的区别
本文链接:https://www.haomeiwen.com/subject/nhzgwltx.html
网友评论