Swift基础篇-多态和类型转换

128 阅读1分钟

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]**

\
*/