論“繼承與多態”的重要性

來源:互聯網
上載者:User

標籤:

   物件導向語言三大特徵:封裝、繼承、多態。

   封裝:一個類留給外部介面總是小於內部實現的方法。

   繼承:自雷可以繼承父類的欄位、屬性、方法。

   多態:面對同一訊息,不同類的對象做出不同的響應。

一、認識繼承

(1)生活角度

  父類:動物    英雄        人

  子類:狗      抗日英雄    中國人

   父類          超類        基類

   子類          子類        衍生類別

【繼承】也稱派生。繼承指的是子類繼承父類的欄位、屬性、方法。派生是指子類在父類基礎上可以添加自己特有的欄位、屬性、方法。【繼承】與【派生】是對同一種行為,不同側重點的描述。

【注】

(a)子類可以從父類繼承到父類所有的欄位、屬性、方法。父類在interface中聲明欄位、屬性、方法,子類全部可以使用。父類在impletation中聲明的欄位、屬性、方法,子類同樣可以繼承,但是無法使用。

(b)子類可以在父類的基礎上添加自己特有的欄位、屬性、方法。

【注】

1.oc中 所有的方法都是虛函數,都可以被子類重寫

2.重寫之後,子類對象調用的是子類中重寫之後的方法。

3.很多時候,我們並不需要將父類某些方法完全重寫,而在父類基礎開枝散葉。這個時候我們借用super關鍵字去調用的方法。

self與super  

【問】為什麼我們不可以將對象開闢在棧中,只能建立在堆上?

因為oc是動態機制,所謂的動態機制,是指在程式編程階段是無法確定一個類的父類的,自然就不可以確定他的大小,沒辦法確定大小就沒有辦法再棧開闢空間,所以只能在運行階段,動態去對上為對象開闢空間。

二、繼承的作用

1.建立大量相似的類(oc中幾乎不用)

【例】在遊戲開發中,我們會建立一個怪物,殭屍,幽靈,怪物的行為:遊盪、攻擊、被攻擊、死亡。

2、繼承一個官方 的類或者繼承一個第三方的類。

【注】NSString\NSArray\NSDictionsry 不可以被繼承。

3、使用繼承去實現多態。

【多態】是不同對象面對同一個訊息做出不同的反應。

一、認識多態

(1)從生活角度

面對上課鈴響,上體育課和文化課的學生面對‘鈴響‘做出不同的舉動。

(2)從代碼角度

父類指標指向子類對象,通過父類指標調用方法時,父類指標指的對象不同,面對同一訊息的響應結果不同。

【注】以上多態,主要是C++實現多台的手段,在OC階段實現多態是通過協議。

【繼承】+【重寫】+【父類指標實現多態】

【類別】category

當我們在使用一個類的時候,我們經常會感歎:如果這個類再有一個什麼方法多好啊,通常不方便直接修改該類。

【注】

1、在類別中只能新增成員方法。類方法,但是不可以新增成員變數、屬性。

2、在類別中添加方法就如同添加到了原類中。

3、在類別定義成員方法也可以是原類的成員變數。

4、父類的類別添加的成員方法、類方法,子類也可以使用。

5、要想使用類別中添加的方法,需要匯入類別的標頭檔(原類+類別名)。

 

論“繼承與多態”的重要性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.