Swift

Swift 中实现多态和类型转换

2021-03-11  本文已影响0人  孤雁_南飞
  1. 使用类型检查操作符 (is) 来检查一个实例是否属于一个特定的子类。如果实例时该子类类型,类型检查操作符返回 true,否则返回 false。
  1. 某个类类型的常量或变量可能实际上在后台引用自一个子类的实例。当你遇到这种情况时你可以尝试使用类型转换操作符(as? 或 as!) 将它向下类型转换至其子类类型。
  2. 由于向下类型转换可能失败,类型转换操作符就有了两种不同形式。条件形式,as?,返回了一个你将要向下类型转换的值的可选项。强制形式,as!,则将向下类型转换和强制展开结合为一个步骤。
  1. Swift 为不确定的类型提供了两种特殊的类型别名:
  2. AnyObject 可以表示任何类类型的实例。
  3. Any 可以表示任何类型,包括函数类型。
  1. Swift 中的类,结构体和枚举可以进行嵌套,即在某一类型的内部定义类型,这种类型嵌套在 Java 中成为内部类,在 C# 中成为嵌套类
  2. 嵌套类型的能够访问它外部的成员
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 library = [
    Movie(name: "1111", director: "100000"),
    Song(name: "22222", artist: "200000")
]
print(type(of: library))
for item in library {
    if let realItem = item as? Movie {
        print(realItem.director)
    }
}
上一篇 下一篇

猜你喜欢

热点阅读