Swift-Private/FilePrivate/Public/Open的作用和區(qū)別

原來(lái) Swift 中有2種常用訪問(wèn)控制關(guān)鍵字(訪問(wèn)控制修飾符),分別為 private 和 public。而在 Swift 3.0+,又在原來(lái)的基礎(chǔ)上新增了兩種:fileprivate、open。它們可以看成是對(duì) private 和 public 的進(jìn)一步細(xì)分。

用一張圖區(qū)分四種修飾符的訪問(wèn)權(quán)限

1、private 修飾符

只允許在當(dāng)前類中調(diào)用,不包括 Extension
private 現(xiàn)在變?yōu)榱苏嬲乃接性L問(wèn)控制
用 private 修飾的方法不可以被代碼域之外的地方訪問(wèn)
2、fileprivate 修飾符

fileprivate 其實(shí)就是過(guò)去的 private。
其修飾的屬性或者方法只能在當(dāng)前的 Swift 源文件里可以訪問(wèn)。
即在同一個(gè)文件中,所有的 fileprivate 方法屬性都是可以訪問(wèn)到的。

class A {
    fileprivate func test(){
        print("this is fileprivate func!")
    }
}

class B:A {
    func show(){
        test()
    }
}

3、public 修飾符

修飾的屬性或者方法可以在其他作用域被訪問(wèn)
但不能在重載 override 中被訪問(wèn)
也不能在繼承方法中的 Extension 中被訪問(wèn)
4、open 修飾符

open 其實(shí)就是過(guò)去的 public,過(guò)去 public 有兩個(gè)作用:

修飾的屬性或者方法可以在其他作用域被訪問(wèn)
修飾的屬性或者方法可以在其他作用域被繼承或重載 override
從高到低排序如下:

open > public > fileprivate > private

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容