在Swift語(yǔ)言中,訪問(wèn)修飾符有五種,分別為fileprivate,private,internal,public和open。
其中 fileprivate和open是Swift 3新添加的。由于過(guò)去 Swift對(duì)于訪問(wèn)權(quán)限的控制,不是基于類的,而是基于文件的。這樣會(huì)有問(wèn)題,所以Swift 3新增了兩個(gè)修飾符對(duì)原來(lái)的private、public進(jìn)行細(xì)分。
一、各個(gè)修飾符區(qū)別
1,private
private訪問(wèn)級(jí)別所修飾的屬性或者方法只能在當(dāng)前類里訪問(wèn)。
2,fileprivate
fileprivate訪問(wèn)級(jí)別所修飾的屬性或者方法在當(dāng)前的Swift源文件里可以訪問(wèn)。
3,internal(默認(rèn)訪問(wèn)級(jí)別,internal修飾符可寫可不寫)
internal訪問(wèn)級(jí)別所修飾的屬性或方法在源代碼所在的整個(gè)模塊都可以訪問(wèn)。
如果是框架或者庫(kù)代碼,則在整個(gè)框架內(nèi)部都可以訪問(wèn),框架由外部代碼所引用時(shí),則不可以訪問(wèn)。
如果是App代碼,也是在整個(gè)App內(nèi)部可以訪問(wèn)。
可以被任何人訪問(wèn)。但其他module中不可以被override和繼承,而在module內(nèi)可以被override和繼承
5,open
可以被任何人使用,包括override和繼承。
二、修飾符訪問(wèn)權(quán)限排序
open > public > internal > fileprivate > private