用途
- サブクラスに、イニシャライザのオーバーライドを強制するとき
- プロトコルのイニシャライザをオーバーライドするとき
また、
required 修飾子は、イニシャライザ init() でのみ使用可能。
インスタンスメソッドでは使用不可。
サブクラスに、イニシャライザのオーバーライドを強制する時
例:
class Animal {
let name: String
//
// A(サブクラスにイニシャライザのオーバーライドを強制するときは、required 修飾子を付ける)
//
required init() {
self.name = "unknown"
}
}
class Cat: Animal {
//
// A をオーバーライド(override 修飾子ではなく、required 修飾子を使うことに注意)
//
required init() {
super.init()
}
}
ポイント
- サブクラスにイニシャライザのオーバライドを強制する場合、スーパクラスとサブクラスの両方にrequiredをつける。
プロトコルのイニシャライザをオーバライドする時
例:
protocol SomeProtocol {
//
// A
//
init()
}
class Animal: SomeProtocol {
//
// A をオーバーライド
//
required init() {
}
}
ポイント
- protocolのイニシャライザはrequiredをつけない
- protocolのイニシャライザをオーバーライドする時につける