繼承

一個(gè)類可以從另一個(gè)類繼承方法盐类,屬性和其他特征。當(dāng)一個(gè)類從另一類繼承時(shí)呛谜,繼承的類稱為子類在跳,而其繼承的類稱為其超類。繼承是一種基本行為隐岛,可將Swift中的類與其他類型區(qū)分開猫妙。

Swift中的類可以調(diào)用和訪問屬于其超類的方法,屬性和下標(biāo)聚凹,并且可以提供這些方法割坠,屬性和下標(biāo)的自己的重寫版本以完善或修改其行為。Swift通過(guò)檢查覆蓋定義是否具有匹配的超類定義來(lái)幫助確保覆蓋是正確的妒牙。

類還可以將屬性觀察器添加到繼承的屬性中彼哼,以便在屬性值更改時(shí)得到通知∠娼瘢可以將屬性觀察器添加到任何屬性敢朱,而不管其最初是定義為存儲(chǔ)屬性還是計(jì)算屬性。

定義基類

任何不從另一個(gè)類繼承的類都稱為基類摩瞎。Swift類不從通用基類繼承拴签。您未指定超類而定義的類將自動(dòng)成為基礎(chǔ)類供您構(gòu)建。

子類化

子類化是在現(xiàn)有類的基礎(chǔ)上建立新類的行為旗们。子類繼承現(xiàn)有類的特征蚓哩,然后可以對(duì)其進(jìn)行優(yōu)化。您還可以向子類添加新的特征上渴。

覆寫

子類可以提供其自己的實(shí)例方法岸梨,類型方法喜颁,實(shí)例屬性,類型屬性或下標(biāo)的自定義實(shí)現(xiàn)盛嘿,否則該實(shí)例方法將從超類繼承洛巢。這稱為覆蓋

要覆蓋原本會(huì)被繼承的特征次兆,請(qǐng)?jiān)诟采w定義的前面加上override關(guān)鍵字稿茉。

訪問超類的方法,屬性和下標(biāo)

當(dāng)您為子類提供方法芥炭,屬性或下標(biāo)替代時(shí)漓库,將現(xiàn)有的超類實(shí)現(xiàn)用作替代的一部分有時(shí)會(huì)很有用。例如园蝠,您可以優(yōu)化該現(xiàn)有實(shí)現(xiàn)的行為渺蒿,或者將修改后的值存儲(chǔ)在現(xiàn)有的繼承變量中。

在適當(dāng)?shù)那闆r下彪薛,您可以使用super前綴訪問方法茂装,屬性或下標(biāo)的超類版本:

重寫方法someMethod()可以在someMethod()中通過(guò)super.someMethod()在重寫方法實(shí)現(xiàn)中調(diào)用來(lái)調(diào)用的超類版本。

被稱為覆蓋的屬性someProperty可以訪問的超類版本someProperty作為super.someProperty壓倒一切的getter或setter實(shí)現(xiàn)中善延。

覆蓋下標(biāo)someIndex可以從覆蓋下標(biāo)實(shí)現(xiàn)中訪問同一下標(biāo)的超類版本super[someIndex]少态。

覆蓋方法

您可以重寫繼承的實(shí)例或類型方法,以在子類中提供該方法的定制或替代實(shí)現(xiàn)易遣。

覆蓋屬性

您可以覆蓋繼承的實(shí)例或類型屬性彼妻,以為該屬性提供自己的自定義getter和setter,或添加屬性觀察器以使覆蓋的屬性能夠在基礎(chǔ)屬性值更改時(shí)進(jìn)行觀察豆茫。

覆蓋屬性獲取器和設(shè)置器

您可以提供一個(gè)自定義的getter(如果合適的話侨歉,可以使用setter)來(lái)覆蓋任何繼承的屬性,而不管該繼承的屬性是在源上實(shí)現(xiàn)為存儲(chǔ)屬性還是計(jì)算屬性揩魂。子類不知道繼承屬性的存儲(chǔ)或計(jì)算性質(zhì)幽邓,它僅知道繼承屬性具有特定名稱和類型。您必須始終聲明要覆蓋的屬性的名稱和類型火脉,以使編譯器能夠檢查您的覆蓋是否與具有相同名稱和類型的超類屬性匹配颊艳。

通過(guò)在子類屬性重寫中同時(shí)提供getter和setter,可以將繼承的只讀屬性表示為讀寫屬性忘分。但是棋枕,您不能將繼承的讀寫屬性表示為只讀屬性。

如果在屬性替代中提供了一個(gè)setter妒峦,則還必須為該替代提供一個(gè)getter重斑。如果您不想在覆蓋的getter中修改繼承的屬性的值,則可以簡(jiǎn)單地通過(guò)super.someProperty從getter返回值來(lái)傳遞繼承的值肯骇。

覆蓋屬性觀察者

可以使用屬性覆蓋將屬性觀察器添加到繼承的屬性窥浪。這使您可以在繼承的屬性的值更改時(shí)得到通知祖很,而無(wú)論該屬性最初是如何實(shí)現(xiàn)的。

不能將屬性觀察器添加到繼承的常量存儲(chǔ)屬性或繼承的只讀計(jì)算屬性漾脂。這些屬性的值無(wú)法設(shè)置假颇,因此不建議在替代中提供willSet或didSet實(shí)現(xiàn)。

還要注意骨稿,您不能同時(shí)為同一屬性提供覆蓋設(shè)置器和覆蓋屬性觀察器笨鸡。如果您要觀察屬性值的變化,并且已經(jīng)在為該屬性提供自定義設(shè)置器坦冠,則可以簡(jiǎn)單地觀察自定義設(shè)置器中的任何值更改形耗。

防止被覆蓋

您可以通過(guò)將方法,屬性或下標(biāo)標(biāo)記為final來(lái)防止其被覆蓋辙浑。final?varfinal?funcfinal?class?funcfinal?subscript

嘗試覆蓋子類中的最終方法激涤,屬性或下標(biāo)的任何嘗試都將報(bào)告為編譯時(shí)錯(cuò)誤。您添加到擴(kuò)展中的類的方法判呕,屬性或下標(biāo)也可以在擴(kuò)展的定義中標(biāo)記為final倦踢。您可以通過(guò)在類定義()中final的class關(guān)鍵字之前編寫修飾符來(lái)將整個(gè)類標(biāo)記為最終類。任何試圖將最終類作為子類的嘗試都將報(bào)告為編譯時(shí)錯(cuò)誤侠草。final?class

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辱挥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梦抢,更是在濱河造成了極大的恐慌般贼,老刑警劉巖愧哟,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奥吩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蕊梧,警方通過(guò)查閱死者的電腦和手機(jī)霞赫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肥矢,“玉大人端衰,你說(shuō)我怎么就攤上這事「矢模” “怎么了旅东?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)十艾。 經(jīng)常有香客問我抵代,道長(zhǎng),這世上最難降的妖魔是什么忘嫉? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任荤牍,我火速辦了婚禮案腺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘康吵。我一直安慰自己劈榨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布晦嵌。 她就那樣靜靜地躺著同辣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耍铜。 梳的紋絲不亂的頭發(fā)上邑闺,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音棕兼,去河邊找鬼陡舅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伴挚,可吹牛的內(nèi)容都是我干的靶衍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茎芋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颅眶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起田弥,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涛酗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后偷厦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體商叹,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年只泼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剖笙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡请唱,死狀恐怖弥咪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情十绑,我是刑警寧澤聚至,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站本橙,受9級(jí)特大地震影響扳躬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一坦报、第九天 我趴在偏房一處隱蔽的房頂上張望库说。 院中可真熱鬧,春花似錦片择、人聲如沸潜的。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)啰挪。三九已至,卻和暖如春嘲叔,著一層夾襖步出監(jiān)牢的瞬間亡呵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工硫戈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锰什,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓丁逝,卻偏偏與公主長(zhǎng)得像汁胆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霜幼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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

  • 一個(gè)類可以從另一個(gè)類繼承方法嫩码、屬性和其他特征。當(dāng)一個(gè)類從另一個(gè)類繼承時(shí)罪既,繼承類稱為子類铸题,它繼承的類稱為超類。繼承是...
    微笑中的你閱讀 67評(píng)論 0 0
  • 案例代碼下載 繼承 類可以從另一個(gè)類繼承方法琢感,屬性和其他特性丢间。當(dāng)一個(gè)類繼承自另一個(gè)類時(shí),繼承類稱為子類猩谊,它繼承的類...
    酒茶白開水閱讀 206評(píng)論 0 0
  • 繼承 類可以從另一個(gè)類繼承方法千劈、屬性和其他特性祭刚,繼承類稱為子類牌捷,被繼承類為其超類。Swift的類可以調(diào)用和訪問超類...
    暗夜夜夜行路閱讀 656評(píng)論 0 0
  • 引言 繼續(xù)學(xué)習(xí)Swift文檔涡驮,從上一章節(jié):下標(biāo)暗甥,我們學(xué)習(xí)了Swift下標(biāo)相關(guān)的內(nèi)容,如下標(biāo)語(yǔ)法捉捅、下標(biāo)用法撤防、下標(biāo)選項(xiàng)...
    shiyueZ閱讀 938評(píng)論 0 1
  • 本章將會(huì)介紹 下標(biāo)語(yǔ)法下標(biāo)用法下標(biāo)選項(xiàng)定義一個(gè)基類子類生成重寫防止重寫 下標(biāo) 下標(biāo)可以定義在類寄月、結(jié)構(gòu)體和枚舉中辜膝,是...
    寒橋閱讀 442評(píng)論 0 1