1. ホーム
  2. swift

[解決済み] Swift - サブクラスでオーバーライドする必要があるクラスメソッド

2022-09-19 09:18:27

質問

Swift で "純粋仮想関数" を作成する標準的な方法はありますか。 でなければなりません。 はすべてのサブクラスによってオーバーライドされなければならず、そうでない場合は、コンパイル時エラーを引き起こしますか?

どのように解決するのですか?

2つのオプションがあります。

1. プロトコルを使用する

スーパークラスをクラスではなくプロトコルとして定義する

プロ : 各サブクラス(実際のサブクラスではない)が必要なメソッドを実装しているかどうか、コンパイル時にチェックします。

コン : スーパークラス(プロトコル)はメソッドやプロパティを実装できない。

2. スーパーバージョンのメソッドでアサートする

class SuperClass {
    func someFunc() {
        fatalError("Must Override")
    }
}

class Subclass : SuperClass {
    override func someFunc() {
    }
}

プロ : スーパークラスでメソッドやプロパティを実装できる

コン : コンパイル時のチェックがない