2016-09-23 29 views
1

Swift 3引入了我在框架中使用的新的open关键字。“open”类的初始化程序是否也需要打开?

此框架中的open类是否需要在所述框架之外使用open初始化程序,或者init函数是否继承了类的open声明?

例如:

open class OpenClass { 
    var A: String 

    init() {   // does this init() function need to be marked open? 
     A = String() 
    } 
} 

方的问题:做变量的公开课OpenClass继承类的开放性?

回答

3

SE-0117 Allow distinguishing between public access and public overridability

初始值设定项不参加公开检查;它们不能被声明为公开的,并且对于提供与超类中的初始化程序具有相同签名的初始化程序没有限制。

你不必和你不能声明init方法为开:

open class OpenClass { 

    open init() { // error: only classes and overridable class members can be declared 'open'; use 'public' 

    } 
} 

一类(属性 和方法)的所有成员的默认访问级别为内部,那也适用于公开课。

相关问题