在类的构造器前添加 required 修饰符表明所有该类的子类都必须实现该构造器:
class SomeClass { required init() { // 构造器的实现代码 } }
在子类重写父类的必要构造器时,必须在子类的构造器前也添加 required 修饰符,表明该构造器要求也应用于继承链后面的子类。在重写父类中必要的指定构造器时,不需要添加 override 修饰符:
class SomeSubclass: SomeClass { required init() { // 构造器的实现代码 } }
注:
1.如果子类继承的构造器能满足必要构造器的要求,则无须在子类中显式提供必要构造器的实现。
2.对于希望子类实现的初始化方法,我们可以通过required限制,强制子类重写,这样写的作用保证了依赖某个Designated初始化方法的convenience一直可以使用。另外可以用required修饰convenience方法,用来保证子类不直接使用父类的convenience。