目次
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クラスを継承したいのであれば、必ず名前と年齢を定義(初期化)しなければいけません。
これにより、子クラスでは必ず、親クラスのname
とage
の初期化をしなければならないので名前の年齢どちらかを忘れた子クラスが誕生する心配はないですね!
3. おわりに
いかがでしたでしょうか?required init
によって、子クラスで親クラスのinitを強制的に実装させることで、子クラスの必要要素の実装・定義忘れも撲滅されます!
ヒューマンエラー根絶に一役買うってわけですね!
コメント