gpt4 book ai didi

inheritance - swift 子类*总是*必须调用 super.init()

转载 作者:IT王子 更新时间:2023-10-29 05:06:38 25 4
gpt4 key购买 nike

如果我有一个 swift 子类:

  1. 不需要访问self
  2. 不需要访问self的任何属性

我还需要在子类的init()方法中调用super.init()吗?

*注意:这是一个不同于提问和回答的问题 here on SO因为上面 1 和 2 中列出的细节。

最佳答案

不,你不必。

假设您有以下类(class)。

class a {
let name: String

init() {
name = "james"
}
}

class b: a {
let title: String

override init() {
title = "supervisor"
}
}

如果你用

实例化一个变量

让 myVar = b()

然后,

  • override init() in b 将被调用
  • 然后调用a中的init()

即使您没有显式调用 super.init()


Chris Laettner 在 swift 用户的电子邮件列表中确认了这一点。当您的父类(super class)有一个带有零参数初始化的指定初始化程序时,它就会启动。这就是为什么从 NSObject 派生时不必调用 super.init() 的原因。

*感谢 Wingzero 在下方的评论

关于inheritance - swift 子类*总是*必须调用 super.init(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com