根据Swift的构造器生成规则:
如果自定义指定构造器,必须在自定义构造方法里调用父类的指定构造器;
如果自定义便利构造器,必须在自定义的构造方法里调用自己的指定构造器。
那么有一种情况,是自定义指定构造器的时候,不需要调用父类的指定构造器。这种情况什么时候发生呢?
这种情况发生在当父类没有任何的指定构造器、父类所有的储存属性都不在子类重写,并且子类重写的构造方法是init()
方法的时候。
请注意三个限制条件:
父类没有任何的指定构造器;
父类的所有储存属性都不在子类重写;
自己重写的是
init()
方法。
举个例子,父类是A,子类是B。
class A {
var: String = "c"
}
class B: A {
var: String
override init() {
d = "d"
}
}
此时满足上面所说的条件,在B类重写的init()
方法中不需要调动super.init()
。