原來(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