「SwiftでJavaやC#の抽象クラスのようなものを実装する」の版間の差分

提供:MonoBook
ページの作成:「'''swift'''には抽象クラスなどという軟弱な概念はないが、protocolとextensionを組み合わせるとそれっぽくなる。 <source lang=swift> pro…」
 
編集の要約なし
 
1行目: 1行目:
'''swift'''には抽象クラスなどという軟弱な概念はないが、protocolとextensionを組み合わせるとそれっぽくなる。
[[swift]]には[[抽象クラス]]などという軟弱な概念はないが、protocolとextensionを組み合わせるとそれっぽくなる。


<source lang=swift>
<source lang=swift>

2024年1月9日 (火) 04:09時点における最新版

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

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

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