メインメニューを開く

SwiftでJavaやC#の抽象クラスのようなものを実装する

2024年1月9日 (火) 04:09時点におけるAdministrator (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

swiftには抽象クラスなどという軟弱な概念はないが、protocolとextensionを組み合わせるとそれっぽくなる。

protocol SomeProtocol {
    func foo()
}
extension SomeProtocol {
    // メソッドのデフォルトの実装
    func foo() {
    }
}

class SomeClassA: SomeProtocol {
    // メソッドのオーバーライドされた実装
    func foo() {
    }
}
class SomeClassB: SomeProtocol {
    // foo()メソッドを書かないとextensionのデフォルトの実装が呼ばれる
}