1类型检查
使用类型检查操作符(is)来检查是个实例是否属于一个特定的字类。如果实例是该子类类型,类型检查操作符返回true,否则返回false
2向下的类型转换
- 某个类类型的常量或变量可能实际上在后台引用自一个子类的实例。当遇到这种情况时可以尝试使用类型转换操作符(as? 或 as!)将它向下类型转换至其子类类型
- 由于向下类型转换可能失败,类型转换操作符就有了两个不同的形式。条件形式 as? ,返回一个将要向下类型转换值的可选项。强制形式, as! ,则将向下类型转换和强制展开成一个想要的值,结合为一个步骤。
3.Any和AnyObject
Swift为不确定的类型提供了两种特殊的类型别名
AnyObject 可以表示任何类型的实例
Any可以表示任何类型,包括函数类型
4.嵌套类型
Swift中的类,结构体,和枚举可以进行嵌套,即在某一类型的内部定义类型,这种类型嵌套在Java中称为内部类,在c#中称为嵌套类
嵌套类型是能够访问他的外部成员
5.代码举例
class MediaItem {
var name : String
init(name : String) {
self.name = name
}
}
class Movie : MediaItem {
var director :String
init(name:String,director : String) {
self.director = director;
super.init(name: name)
}
}
class Song : MediaItem {
var artist : String
init(Name:String,artist:String) {
self.artist = artist
super.init(name: Name)
}
}
let array = [
Movie(name: "1", director: "2"),
Song(Name: "4", artist: "5"),
Movie(name: "8", director: "9")
]
print(type(of: array))
print(array)
/*
日志打印
**Array<MediaItem>**
**[testSwift.Movie, testSwift.Song, testSwift.Movie]**
\
*/