类型检查
1、is
is操作符可以判断一个实例是否是某个类的类型,如果是目标类型,结果返回true。 运用场景,类的多态性,判断一个父类实例的真正类型是不是子类类型。
类型转换:对象类型转换一定发生在继承的前提下
2、as 向上转换
仅仅应用于向上转换(子类类型转换为父类类型 - upcast少见), 比如
(Student子类 -> Person父类)
let p1 : Student = Student(xx,xx,xx)
let p11: Person = p1 as Person // as Person可以省略
3、as!向下转换 拆包
在类型转换过程中对可选值进行拆包,转换结果是非可选类型:
将非可选类型转换为非可选类型
将可选类型转换为非可选类型
--转换过程中,不能转换为目标类型的 会出现运行时错误。如果可选类型为nil转换为非可选类型也是会报错
4、as?向下转换 不拆包
在类型转换过程中不进行拆包,转换的结果是可选类型:
将非可选类型转换为可选类型
将可选类型转换为可选类型
--转换过程中,不能转换为目标类型的 不会出现运行时错误,结果是nil。如果可选类型为nil转换为可选类型也不会报错,转换之后的值也为nil。