關(guān)于 swift 中的open ,public ,fileprivate,private, internal的區(qū)別 以下按照修飾關(guān)鍵字的訪問約束范圍 從約束的限定范圍大到小的排序進(jìn)行說明
open,public,fileprivate,private,internal 這幾個修飾詞的作用是用于修飾訪問級別的畦徘。
撵孤、open,public 對應(yīng)的級別是該模塊或者是引用了該模塊的模塊可以訪問 即 a belong to A , B import A 這兩種情況都可以對 a進(jìn)行訪問
public: 類用public(或級別更加等級更低的約束(如private等))修飾后只能在本模塊(sdk)中被繼承叹洲,如果public是修飾屬性的話也是只能夠被這個module(sdk)中的子類重寫
open:用open修飾的類可以在本某塊(sdk),或者其他引入本模塊的(sdk,module)繼承汹粤,如果是修飾屬性的話可以被此模塊或引入了此某塊(sdk)的模塊(sdk)所重寫
丽蝎、internal 是在模塊內(nèi)部可以訪問最岗,在模塊外部不可以訪問糊昙,a belong A , B import A, A 可以訪問 a, B 不可以訪問a.比如你寫了一個sdk僻造。那么這個sdk中有些東西你是不希望外界去訪問他包雀,這時候你就需要internal這個關(guān)鍵字(我在導(dǎo)入第三方框架時發(fā)現(xiàn)其實沒有定義的話sdk里面是默認(rèn)internal的)
宿崭、fileprivate 這個修飾跟名字的含義很像,file private 就是文件之間是private的關(guān)系才写,也就是在同一個source文件中還是可以訪問的葡兑,但是在其他文件中就不可以訪問了 ?a belong to file A, a not belong to file B , 在 file A 中 可以訪問 a,在 file B不可以訪問a
赞草、private 這個修飾約束性比fileprivate的約束性更大讹堤,private 作用于某個類,也就是說厨疙,對于 class A ,如果屬性a是private的洲守,那么除了A外其他地方都不能訪問了(fileprivate 和private都是一種對某個類的限制性約束。fileprivate的適用場景可以是某個文件下的extension轰异,如果你的類中的變量定義成了private那么這個變量在你這個類在這個類的文件的拓展中就無法訪問了岖沛,這時就需要定義為fileprivate)
---------------------
作者:zhikang_in_csdn
來源:CSDN
原文:https://blog.csdn.net/taylorlannister/article/details/89376158
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接搭独!