MENU

【Swift文法】子クラスの実装ミスを根絶するrequired init

目次

1. required initとは?

required initとは「イニシャライザにのみ使用できる」、「required initをもつクラスを継承する(サブ)クラスでは必ず実装しなければならない」と言った性質を持つ修飾子付きのイニシャライザです。
これを実装することにより、複数人で開発する際のイニシャライザの実装忘れの防止や、設計の共通認識を持つことができます。

2. 実例

早速コードを見てみます。

class Human() {
    var name: String
    var age: Int

    required init(name: String, age: Int) {
        self.name = name
        self.age = age
        print("called Human class initializer")
    }
}

class Suzuki: Human {
    required init(name: String, age: Int) {
        // ここで必ず親クラスのinitの処理をする!
        super.init(name: name, age: Int)
    }
}

親クラスにrequired initがいることによって、必ず親クラスのinitの処理をしなければなりません。
ここでは、Humanクラスを継承したいのであれば、必ず名前と年齢を定義(初期化)しなければいけません。
これにより、子クラスでは必ず、親クラスのnameageの初期化をしなければならないので名前の年齢どちらかを忘れた子クラスが誕生する心配はないですね!

3. おわりに

いかがでしたでしょうか?required initによって、子クラスで親クラスのinitを強制的に実装させることで、子クラスの必要要素の実装・定義忘れも撲滅されます!
ヒューマンエラー根絶に一役買うってわけですね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Rio@iOSエンジニアのアバター Rio@iOSエンジニア 経営者兼モバイルアプリエンジニア

都内のモバイルアプリ開発会社経営者。
モバイルアプリの新規の請負開発及び保守運用を引き受ける。
Denso→Honda→現在
#RxSwift #MVVM #Firebase #Python3

コメント

コメントする

目次