重寫

重寫set get

  • 可以將一個(gè)父類的存儲(chǔ)屬性重寫成計(jì)算屬性
  • 不可以將一個(gè)父類的存儲(chǔ)屬性再重寫成存儲(chǔ)屬性
  • 你可以將一個(gè)繼承來的只讀屬性重寫為一個(gè)讀寫屬性,只需要在重寫版本的屬性里提供 getter 和 setter 即可。但是,你不可以將一個(gè)繼承來的讀寫屬性重寫為一個(gè)只讀屬性。

重寫屬性觀察器

  • 不可以為繼承來的常量存儲(chǔ)型屬性或繼承來的只讀計(jì)算型屬性添加屬性觀察器。這些屬性的值是不可以被設(shè)置的,所以,為它們提供willSet或didSet實(shí)現(xiàn)是不恰當(dāng)。
  • 此外還要注意,你不可以同時(shí)提供重寫的 setter 和重寫的屬性觀察器。如果你想觀察屬性值的變化,并且你已經(jīng)為那個(gè)屬性提供了定制的 setter,那么你在 setter 中就可以觀察到任何值變化了。

防止重寫

  • 可以通過把方法,屬性或下標(biāo)標(biāo)記為final來防止它們被重寫,只需要在聲明關(guān)鍵字前加上final修飾符即可
    例如:final var,final func,final class func,以及final subscript
  • 如果你重寫了帶有final標(biāo)記的方法,屬性或下標(biāo),在編譯時(shí)會(huì)報(bào)錯(cuò)。在類擴(kuò)展中的方法,屬性或下標(biāo)也可以在擴(kuò)展的定義里標(biāo)記為 final 的。
  • 可以通過在關(guān)鍵字class前添加final修飾符(final class)來將整個(gè)類標(biāo)記為 final 的。這樣的類是不可被繼承的,試圖繼承這樣的類會(huì)導(dǎo)致編譯報(bào)錯(cuò)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一個(gè)類可以從另外一個(gè)類中繼承方法,屬性或者其它的一些特性。當(dāng)一個(gè)類繼承于另外一個(gè)類時(shí),這個(gè)繼承的類叫子類,被繼承的...
    泥孩兒0107閱讀 2,068評(píng)論 0 1
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 3,144評(píng)論 2 9
  • 定義一個(gè)基類(Defining a Base Class) 不繼承于其它類的類,稱之為基類(base class)...
    蠱毒_閱讀 689評(píng)論 0 1
  • 子類可以為繼承來的實(shí)例方法,類方法,實(shí)例屬性,或下標(biāo)提供自己定制的實(shí)現(xiàn)。我們把這種行為叫做重寫。如果要重寫某個(gè)特性...
    GY1994閱讀 542評(píng)論 0 1
  • 少年人,歪著頭 我說千山,卻邁不過萬(wàn)水 嘈雜如窗外,車水又馬龍 心靜如死水,難聞?dòng)执瘫?騰空一起,卻是萬(wàn)丈深淵
    三言兩字閱讀 191評(píng)論 0 3

友情鏈接更多精彩內(nèi)容