LoginSignup
2
2

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

Posted at

目次

1.required initとは?
2.実例
3.おわりに

1. required initとは?

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

#2. 実例
早速コードを見てみます。

required.swift
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を強制的に実装させることで、子クラスの必要要素の実装・定義忘れも撲滅されます!
ヒューマンエラー根絶に一役買うってわけですね!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2