クラスにより、継承やOverrideされたくない場合があるよね。
そういう場合にfinal修飾子を使うことでそれらを禁止することができるよ。
Swiftでfinal修飾子を使う
1 2 3 4 5 6 7 8 9 10 11 |
class SuperClass { func hello() { print("こんにちは") } } class SubClass: SuperClass { override func hello() { print("こんちわ〜") } } |
上記が普通に継承とOverrideをしたものだよ。
classにfinalをつけて継承を禁止する
1 2 3 4 5 6 7 8 9 10 11 |
final class SuperClass { func hello() { print("こんにちは") } } class SubClass: SuperClass { // エラー override func hello() { print("こんちわ〜") } } |
クラスを継承することができなくなるよ。
メソッドにfinalをつけてOverrideを禁止する
1 2 3 4 5 6 7 8 9 10 11 |
class SuperClass { final func hello() { print("こんにちは") } } class SubClass: SuperClass { override func hello() { // エラー print("こんちわ〜") } } |
メソッドをOverrideできなくなるよ。
これもアクセス修飾子などと同じく、適切に設定しよう。