サブクラス化は、既存のクラスを新しいクラスのベースにすることです。サブクラスは、既存のクラスから特徴を継承し、改良することができます。また、サブクラスに新しい特徴を追加することも可能です。
サブクラスにスーパークラスがあることを示すために、サブクラス名の後にスーパークラス名を記述し、コロンで区切ります。
class SomeSubclass: SomeSuperclass {
// サブクラスの定義
}
次の例では、Vehicle
をスーパークラスとするサブクラス Bicycle
を定義しています。
class Bicycle: Vehicle {
var hasBasket = false
}
新しい Bicycle
クラスは、currentSpeed
や description
プロパティと makeNoise()
メソッドなどの、Vehicle
のすべての特徴を自動的に獲得します。
継承する特徴に加えて、Bicycle
クラスは新しいストアドプロパティ hasBasket
をデフォルト値 false
(プロパティを Bool
型と推論)で定義しています。
デフォルトでは、新しく生成する Bicycle
インスタンスにはバスケットがありません。特定の Bicycle
インスタンスを生成後、そのインスタンスの hasBasket
プロパティを true
に設定することができます。
let bicycle = Bicycle()
bicycle.hasBasket = true
Bicycle
インスタンスが継承した currentSpeed
プロパティを変更することや、そのインスタンスが継承した description
プロパティを問い合わせることも可能です。
bicycle.currentSpeed = 15.0
print("Bicycle: \(bicycle.description)")
// Bicycle: traveling at 15.0 miles per hour
サブクラスをさらにサブクラス化することができます。次の例では、2 人乗りの自転車「タンデム」として Bicycle
のサブクラスを生成しています。
class Tandem: Bicycle {
var currentNumberOfPassengers = 0
}
Tandem
は、Vehicle
からすべてのプロパティとメソッドを継承する Bicycle
から、すべてのプロパティとメソッドを継承します。また、サブクラス Tandem
は新しいストアドプロパティ currentNumberOfPassengers
をデフォルト値 0
で追加しています。
Tandem
インスタンスを生成する場合、新しいプロパティおよび継承したプロパティを扱うことができ、Vehicle
から継承する読み取り専用の description
プロパティを問い合わせることができます。
let tandem = Tandem()
tandem.hasBasket = true
tandem.currentNumberOfPassengers = 2
tandem.currentSpeed = 22.0
print("Tandem: \(tandem.description)")
// Tandem: traveling at 22.0 miles per hour
Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.