水夫と戯れて

Appleの開発言語Swiftのことを書く。公開されている範囲内で書いています。文章に「?」が含まれているところはよく理解していないところ。

継承

目次>

サブクラス化

SomeSuperclassクラスを継承してSomeClassを作成する場合

class SomeClass: SomeSuperclass {
    // class definition goes here
}

初期化メソッドなど、上書きする場合は、superの初期化メソッドを呼び出してから

class Bicycle: Vehicle {
    init() {
        super.init()
        numberOfWheels = 2
    }
}

SwiftからObjective-Cクラスを使う - 水夫と戯れて

メソッドのオーバーライド

overrideキーワードを使う

class Car: Vehicle {
    var speed: Double = 0.0
    init() {
        super.init()
        maxPassengers = 5
        numberOfWheels = 4
    }
    override func description() -> String {
        return super.description() + "; "
            + "traveling at \(speed) mph"
    }
}
スーパークラスメソッドやプロパティ、サブスクリプトへのアクセス

super.someMethod() super.someProperty super[someIndex]

プロパティのオーバーライド
プロパティのゲッター・セッターのオーバーライド
class SpeedLimitedCar: Car {
    override var speed: Double  {
    get {
        return super.speed
    }
    set {
        super.speed = min(newValue, 40.0)
    }
    }
}
プロパティ監視のオーバーライド
class AutomaticCar: Car {
    var gear = 1
    override var speed: Double {
    didSet {
        gear = Int(speed / 10.0) + 1
    }
    }
    override func description() -> String {
        return super.description() + " in gear \(gear)"
    }
}
オーバーライドの前に