如果我有一个 swift 子类:
- 不需要访问
self
- 不需要访问
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()
inb
将被调用- 然后调用
a
中的init()
即使您没有显式调用 super.init()
。
Chris Laettner 在 swift 用户的电子邮件列表中确认了这一点。 当您的父类(super class)有一个带有零参数初始化的指定初始化程序时,它就会启动。这就是为什么从 NSObject 派生时不必调用 super.init() 的原因。
*感谢 Wingzero 在下方的评论
关于inheritance - swift 子类*总是*必须调用 super.init(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257224/