「SwiftでJavaやC#の抽象クラスのようなものを実装する」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「'''swift'''には抽象クラスなどという軟弱な概念はないが、protocolとextensionを組み合わせるとそれっぽくなる。 <source lang=swift> pro…」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 1行目: | 1行目: | ||
[[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のデフォルトの実装が呼ばれる
}