Avatar
omochimetaru 6/19/2020 9:21 AM
class C1 { init(b: Int) {} required convenience init(e: Int) { self.init(e: 1) } } class C2: C1 { override init(b: Int) { super.init(b: b) } } // OK
9:21 AM
class C1 { init(b: Int) {} init(c: Int) {} required convenience init(e: Int) { self.init(e: 1) } } class C2: C1 { override init(b: Int) { super.init(b: b) } // NG: init (e) must be provided }
9:22 AM
convenienceとdesignatedで2段階の処理になっている気がする。
9:23 AM
もし、サブクラス側にdesignated initが存在しなければ、全てのdesignated initを自動オーバライドする。 もし、全てのdesignated initがオーバライドされていて、 サブクラス側にconvenience initが存在しなければ、 convenience initのオーバライドが自動実装される。