Swiftのオーバーライド

Swiftではスーパークラスのメソッド名を再定義することができます。
この機能のことをオーバーライドと呼びます。

オーバーライドの例

class SuperClass {
    func method() {
        println("スーパークラスのメソッド");
    }
}

class SubClass : SuperClass {
    override func method() {
        // スーパークラスのメソッドを実行する。
        super.method()
        println("サブクラスのメソッド");
    }
}

Swiftではスーパークラスのメソッドをオーバーライドするにはメソッドの前にoverrideと付ける必要があります。
上記のようにスーパークラスで定義したメソッドをサブクラスで再定義することにより、 サブクラスのインスタンスから methodを呼び出すと再定義された methodが実行されます。

オーバーライドの禁止

スーパークラスであるメソッドをオーバーライドさせたくない場合、 メソッドに@finalを付けるとサブクラスでのオーバーライドを禁止します。

下記のコードはコンパイルエラーになります。

class SuperClass {
    @final func method() {
        println("スーパークラスのメソッド");
    }
}

class SubClass : SuperClass {
    override func method() {
        // スーパークラスのメソッドを実行する。
        super.method()
        println("サブクラスのメソッド");
    }
}

inserted by FC2 system