Swift 訪問控制機(jī)制

概述

隱藏實(shí)現(xiàn)機(jī)制,僅暴露對(duì)應(yīng)的接口和 API 給外部調(diào)用者驶沼,是面向?qū)ο蟮淖罴褜?shí)踐之一炮沐。訪問控制機(jī)制(Access Control)是實(shí)現(xiàn)此機(jī)制的利器之一。類似于 c++回怜、Java大年、C#等,Swift 語言也加入了訪問控制機(jī)制玉雾,而且顆粒度更細(xì)翔试,以便對(duì)代碼進(jìn)行更精細(xì)化的控制。

訪問控制的施加對(duì)象

  • 類型(individual types)
    • 類 (class)
    • 結(jié)構(gòu) (structure)
    • 枚舉 (enumration)
  • 類型之
    • 屬性 (property)
    • 方法 (method)
    • 初始化器 (initializer)
    • 下標(biāo) (subscript)

模塊和源文件

  • 模塊(module) 指的是一個(gè)單獨(dú)的代碼發(fā)布單元复旬,例如 framework遏餐、app、package等赢底。其特征是可以在其他模塊中使用 import 關(guān)鍵字導(dǎo)入和使用失都。
  • 源文件(source file) 指的是一個(gè)單獨(dú)的 Swift 源代碼文件,通常在模塊或者 app 中幸冻。

訪問控制表

Access Level
(訪問級(jí)別)
繼承和 override 外部
(App等)
module
(模塊)
source file
(當(dāng)前代碼文件)
類/結(jié)構(gòu) 說明
open
最高等級(jí)粹庞。在外部模塊中,可以繼承洽损,也可以 override庞溜。
public
公開。在外部模塊中碑定,不可繼承和 override流码。
internal
缺省訪問控制級(jí)別
模塊內(nèi)部均可訪問延刘。
fileprivate
僅當(dāng)前源文件內(nèi)部訪問漫试。
private
僅當(dāng)前源代碼的當(dāng)前類、結(jié)構(gòu)內(nèi)部訪問碘赖。

訪問級(jí)別的基本原則

Swift 的訪問級(jí)別遵循一條基本原則:實(shí)體不能被定義在低訪問級(jí)別的實(shí)體中驾荣。
例如:

  • public 變量不能定義在 internal 類型中
  • 函數(shù)的訪問級(jí)別不能高于其參數(shù)和返回值的最低訪問級(jí)別

例外情況是在單元測試中,測試案例可以訪問任何內(nèi)部實(shí)體普泡。

訪問控制語法

open class SomeOpenClass {}
public class SomePublicClass {}
internal class SomeInternalClass {}
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}

open var someOpenVariable = 0
public var somePublicVariable = 0
internal let someInternalConstant = 0
fileprivate func someFilePrivateFunction() {}
private func somePrivateFunction() {}

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末播掷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撼班,更是在濱河造成了極大的恐慌歧匈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砰嘁,死亡現(xiàn)場離奇詭異件炉,居然都是意外死亡勘究,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門妻率,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人板祝,你說我怎么就攤上這事宫静。” “怎么了券时?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵孤里,是天一觀的道長。 經(jīng)常有香客問我橘洞,道長捌袜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任炸枣,我火速辦了婚禮虏等,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘适肠。我一直安慰自己霍衫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布侯养。 她就那樣靜靜地躺著敦跌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逛揩。 梳的紋絲不亂的頭發(fā)上柠傍,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天浴麻,我揣著相機(jī)與錄音尉间,去河邊找鬼腹暖。 笑死歹撒,一個(gè)胖子當(dāng)著我的面吹牛蝌蹂,可吹牛的內(nèi)容都是我干的芦拿。 我是一名探鬼主播谭确,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宽档,長吁一口氣:“原來是場噩夢啊……” “哼炭懊!你這毒婦竟也來了并级?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤侮腹,失蹤者是張志新(化名)和其女友劉穎嘲碧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體父阻,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愈涩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年望抽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片履婉。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煤篙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毁腿,到底是詐尸還是另有隱情辑奈,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布已烤,位于F島的核電站鸠窗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏胯究。R本人自食惡果不足惜稍计,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裕循。 院中可真熱鬧臣嚣,春花似錦、人聲如沸剥哑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星持。三九已至抢埋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間督暂,已是汗流浹背揪垄。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逻翁,地道東北人饥努。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像八回,于是被迫代替她去往敵國和親酷愧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353