我是Swift的新手,但在初始化程序方面遇到了一些问题。我用以下代码创建了一个Swift文件:
import Foundation
class SuperClass
{
var a : Int
init()
{
a = 10
print("In Superclass")
}
}
class SubClass : SuperClass
{
override init()
{
print("In Subclass")
}
}
在上面的代码中,init()
ofSubClass
不包含对init()
of的调用,SuperClass
即super.init()
in中没有SubClass init()
。
所以我的问题是:
1.如果我不打电话给指定的init()
,为什么没有给出任何错误SuperClass
2.如果我正在创建SubClass
ie的对象let s = SubClass()
,则输出为:
In Subclass
In Superclass
为什么init()
中SuperClass
获取调用?默认情况下,子类init()是否调用超类init()?
为什么
init()
SuperClass的被调用?子init()
类init()
默认情况下会调用超类吗?
基本上是。
如果所有规则都说您应该说super.init()
而您不说,那么它就是为您服务的。
我不喜欢这种行为;它的文档记录不充分,此外,暗中为您做事似乎违背了Swift的精神。但是很久以前,我对它提出了一个错误,并被告知这是预期的行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句