为什么Swift需要初始化子类';super.init()之前的s属性

为什么Swift需要初始化子类';super.init()之前的s属性,swift,Swift,这里是一个问题,我想了解init是如何工作的,以及子类的属性存储在哪里?下面是一个示例,以举例说明其中一个原因,假设您有以下类定义: 类基{ init(){ 你好 } func sayHello(){ 打印(“来自基地的你好”) } } 派生类:基{ let name:String 重写init(){ //不初始化自己的属性,只需调用super() super.init() } 重写func sayHello(){ 打印(“Hello from\(name)”) } } 基本上,基类的初始化调

这里是一个问题,我想了解init是如何工作的,以及子类的属性存储在哪里?下面是一个示例,以举例说明其中一个原因,假设您有以下类定义:

类基{
init(){
你好
}
func sayHello(){
打印(“来自基地的你好”)
}
}
派生类:基{
let name:String
重写init(){
//不初始化自己的属性,只需调用super()
super.init()
}
重写func sayHello(){
打印(“Hello from\(name)”)
}
}
基本上,基类的初始化调用
sayHello
,该方法在子类中被覆盖。现在,调用
super.init()

在调用
super.init
之前初始化所有子类存储的要求是在调用任何可能的操作之前确保对象的有效性