継承の方法

継承はセミコロンで繋げて行います。

class MyClass1 {
    var str1 = "str1"
    private var str2 = "str2"
}

// MyClass1継承してMyClass2クラスを作る
class MyClass2: MyClass1 {
    func displayString() -> String {
        // str2はprivateだからアクセス出来ない
        return "str:(str1)"
    }
}

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

overrideキーワードをつける必要があります。Objective-Cはoverrideキーワードがありませんでしたが、あるほうが明示化されて良いと思います。

class MyClass1 {
    func method1() -> Int {
        return 1
    }
}

class MyClass2: MyClass1 {
    // overrideキーワードをつける
    override func method1() -> Int {
        // 親クラスのメソッドはsuperで呼ぶ
        return super.method1() + 1
    }
}

プロパティのオーバーライド

プロパティもオーバーライドできます。ただし実体が変数ではなく実装であるもののみ。

class MyClass1 {
    // 単なる変数であるプロパティはオーバーライドできない
    var str1 = "str1"
    // こっちはオーバーライドできる
    var str2: String {
        get { return "str2" }
    }
}

class MyClass2: MyClass1 {
    // 親クラスと異なる結果を返すようにオーバーライド
    override var str2: String {
        get { return "str2-1" }
    }
}