Private

私有訪問修飾符限制它所定義的實(shí)體以及實(shí)體中的任何類型的訪問——也稱為“詞匯范圍”葡幸。同一源文件中類型的擴(kuò)展也可以訪問實(shí)體的剖笙。

為了證明這一點(diǎn)臭蚁,可以通過擴(kuò)展BasicAccount創(chuàng)建一個(gè)CheckingAccount(支票賬戶)邮偎。

class CheckingAccount: BasicAccount {
  private let accountNumber = UUID().uuidString
  class Check {
    let account: String
    var amount: Dollars
    //兌現(xiàn)
    private(set) var cashed = false
    func cash() {
      cashed = true
    }
    init(amount: Dollars, from account: CheckingAccount) {
      self.amount = amount
      self.account = account.accountNumber
    }
  } 
}

CheckingAccount有一個(gè)聲明為private的accountNumber瞧捌。CheckingAccount還有一個(gè)嵌套類Check肛跌,可以在其初始化方法中讀取私有值accountNumber。

注意:在本例中察郁,UUID類用于生成唯一的帳戶號(hào)衍慎。這個(gè)類是Foundation的一部分,所以不要忘記導(dǎo)入它!

CheckingAccount能夠開支票和兌換現(xiàn)金皮钠。在CheckingAccount中添加以下方法:

func writeCheck(amount: Dollars) -> Check? {
  guard balance > amount else {
    return nil
  }
  let check = Check(amount: amount, from: self)
  withdraw(amount: check.amount)
  return check
}

func deposit(_ check: Check) {
  guard !check.cashed else {
    return
  }
  deposit(amount: check.amount)
  check.cash()
}

雖然CheckingAccount仍然可以進(jìn)行基本的存款和取款稳捆,但是它現(xiàn)在的 writeCheck(amount:) 在提取金額和創(chuàng)建支票之前需要檢查是否有足夠的余額,并且如果支票已經(jīng)兌現(xiàn)麦轰,那么deposit(_:)方法將不會(huì)存款乔夯。

讓約翰給簡寫張支票砖织,在你的playground上試一試這個(gè)代碼。

// 創(chuàng)建一個(gè)John的支票賬戶存入 $300.00
let johnChecking = CheckingAccount()
johnChecking.deposit(amount: 300.00)
// 開一個(gè) $200.00的支票
let check = johnChecking.writeCheck(amount: 200.0)!
// 創(chuàng)建一個(gè)Jane的支票賬戶, 把 john的支票存進(jìn)去
let janeChecking = CheckingAccount()
janeChecking.deposit(check)
janeChecking.balance // 200.00
// 再次把支票存入末荐,沒有影響侧纯。
// Jane's balance this time :]
janeChecking.deposit(check)
janeChecking.balance // 200.00

使用點(diǎn)語法查看哪些是CheckingAccount的接口。

QQ20180717-094616@2x.png

accountNumber被視為CheckingAccount的實(shí)現(xiàn)細(xì)節(jié)甲脏,對于使用代碼是不可見的眶熬。

同時(shí),Check使cashed私有了块请,所以使用cash()方法代替

QQ20180717-095207@2x.png

這個(gè)接口提供了一種方法娜氏,可以將支票標(biāo)記為已經(jīng)兌換,但不能反過來墩新。換句話說贸弥,不可能取消兌現(xiàn)支票。

最后海渊,盡管在CheckingAccount無法看到accountNumber绵疲,但是任何持有支票的人都可以訪問這個(gè)號(hào)碼:


QQ20180717-095917@2x.png

重要的是,不管這個(gè)代碼是如何實(shí)現(xiàn)的臣疑,訪問修飾符讓代碼形成自己的接口盔憨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朝捆,隨后出現(xiàn)的幾起案子般渡,更是在濱河造成了極大的恐慌懒豹,老刑警劉巖芙盘,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脸秽,居然都是意外死亡儒老,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門记餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驮樊,“玉大人,你說我怎么就攤上這事片酝∏粝危” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵雕沿,是天一觀的道長练湿。 經(jīng)常有香客問我,道長审轮,這世上最難降的妖魔是什么肥哎? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任辽俗,我火速辦了婚禮,結(jié)果婚禮上篡诽,老公的妹妹穿的比我還像新娘崖飘。我一直安慰自己,他們只是感情好杈女,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布朱浴。 她就那樣靜靜地躺著,像睡著了一般碧信。 火紅的嫁衣襯著肌膚如雪赊琳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天砰碴,我揣著相機(jī)與錄音躏筏,去河邊找鬼。 笑死呈枉,一個(gè)胖子當(dāng)著我的面吹牛趁尼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猖辫,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酥泞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啃憎?” 一聲冷哼從身側(cè)響起芝囤,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辛萍,沒想到半個(gè)月后悯姊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贩毕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年悯许,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辉阶。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡先壕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谆甜,到底是詐尸還是另有隱情垃僚,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布规辱,位于F島的核電站谆棺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏按摘。R本人自食惡果不足惜包券,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一纫谅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溅固,春花似錦付秕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亮元,卻和暖如春猛计,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爆捞。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工奉瘤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人煮甥。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓盗温,卻偏偏與公主長得像,于是被迫代替她去往敵國和親成肘。 傳聞我的和親對象是個(gè)殘疾皇子卖局,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容