【发布时间】:2020-07-23 20:01:13
【问题描述】:
required 修饰符是 "to indicate that every subclass of the class must implement that initializer":
class SomeClass {
required init() {
// initializer implementation goes here
}
}
这意味着子类不必继承超类的初始化器。事实上,Stackoverflow answer 表示如果子类有自己的指定初始化程序,那么它不必继承超类的初始化程序。
不过,Swift documentation 表示每个类都必须有至少一个指定的初始化程序,它“调用适当的超类初始化程序以继续沿超类链的初始化过程。”
我的问题是:
- 子类能否不继承超类的初始化程序,如果可以,在什么情况下不继承它是有益的?
- 所需的初始化程序究竟做了什么?在什么情况下满足初始化程序继承要求是必要的?
【问题讨论】: