Swift 3引入了我在框架中使用的新open关键字。
此框架中的open
类是否需要在所述框架之外使用open
初始化程序,或者init函数是否在类上继承open
声明?
例如:
open class OpenClass {
var A: String
init() { // does this init() function need to be marked open?
A = String()
}
}
附带问题:开放课程OpenClass
中的变量是否继承了班级的开放性?
答案 0 :(得分:4)
来自SE-0117 Allow distinguishing between public access and public overridability:
初始化者不参与公开检查;它们不能被声明为开放,并且提供与超类中的初始值设定项具有相同签名的初始化程序没有任何限制。
您不需要,无法将init方法声明为open:
open class OpenClass {
open init() { // error: only classes and overridable class members can be declared 'open'; use 'public'
}
}
类的所有成员的默认访问级别(属性 和方法)是 internal,,也适用于开放类。