型キャストはインスタンスの型を調べる、あるいはそのインスタンスを、そのインスタンスの型のスーパークラス、あるいはサブクラスとして扱うことです。
Swiftの型キャストは
is
または
as
を用いて実装されます。この二つの演算子は簡潔で表現力のある型の調査方法、あるいは型を別の型へキャスト(変換)する方法を提供します。
型キャストのためにクラス階層を定義する
「特定のクラスのインスタンスの型を調べる」
「同じクラス階層の中で、あるクラスのインスタンスを他のクラスへ型キャストする」
これらの目的のために、クラス階層の中の型キャストを使用することができます。3つの継承関係のあるクラスと、それらのクラスのインスタンスを含む配列を定義し、型キャストのサンプルを作っていきます。
最初のクラスはベースクラスのMediaItemです。デジタルメディアライブラリに現れるいくつかの種類のアイテムの基本的な機能を表現します。String型のnameプロパティとイニシャライザを定義します。(全てのメディアアイテムが名前を有すると想定します。)
class MediaItem { var name: String init(name: String) { self.name = name } }
次にMediaItemクラスのサブクラスを二つ定義します。一つはMovieクラス映画に関する情報をカプセル化するクラスです。directorプロパティと、それに対応したイニシャライザが定義されています。二つ目はSongクラスです。Songクラスにはartistプロパティとそれに対応するイニシャライザが追加されています。
class Movie: MediaItem { var director: String init(name: String, director: String) { self.director =…