プロトコルで、準拠する型が特定のイニシャライザを実装するよう要求することができます。プロトコルの定義の一部として、通常のイニシャライザとまったく同じようにイニシャライザを記述しますが、波括弧やイニシャライザの本体は記述しません。

protocol SomeProtocol {
    init(someParameter: Int)
}

プロトコルのイニシャライザ要件のクラス実装

designated イニシャライザまたは convenience イニシャライザとして、準拠するクラスでプロトコルのイニシャライザ要件を実装することができます。両方のケースで、イニシャライザの実装に required を付ける必要があります。

class SomeClass: SomeProtocol {
    required init(someParameter: Int) {
        // イニシャライザ実装
    }
}

required を使用することで、準拠するクラスのすべてのサブクラスもまたプロトコルに準拠するよう、イニシャライザ要件の明示的あるいは継承した実装を提供することを確実にします。

required イニシャライザの詳しい情報は、Required Initializers を確認してください。

NOTE
final が付けられたクラスにはサブクラスを作成できないため、プロトコルのイニシャライザ実装に required を付ける必要はありません。final の詳しい情報は、Preventing Overrides を確認してください。

サブクラスがスーパークラスから designated イニシャライザをオーバーライドし、かつプロトコルのイニシャライザ要件を実装する場合、イニシャライザの実装に required と override の両方を付けます。

protocol SomeProtocol {
    init()
}

class SomeSuperClass {
    init() {
        // イニシャライザ実装
    }
}

class SomeSubClass: SomeSuperClass, SomeProtocol {
    // SomeProtocol からの "required" と、SomeSuperClass からの "override"
    required override init() {
        // イニシャライザ実装
    }
}

failable イニシャライザ要件

Failable Initializers で定義されているように、プロトコルで、準拠する型の failable イニシャライザ要件を定義することができます。

failable イニシャライザ要件は、準拠する型での failable または failable でないイニシャライザで満たすことができます。failable でないイニシャライザ要件は、failable でないイニシャライザ、あるいは無条件にアンラップされた failable イニシャライザによって満たすことができます。


Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.