標籤:
多態按字面的意思就是“多種狀態”。在物件導向語言中,介面的多種不同的實現方式即為多態。多態性是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指標賦值給父類類型的指標。
多態指同一個實體同時具有多種形式。它是物件導向程式設計(OOP)的一個重要特徵。如果一個語言只支援類而不支援多態,只能說明它是基於對象的,而不是物件導向的。
多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指標,來調用實現衍生類別中的方法。
Oc中的多態:不同對象對同一訊息的不同響應.子類可以重寫父類的方法
多態就是允許方法重名 參數或傳回值可以是父類型傳入或返回。
把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。
賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。也就是說,父親的行為像兒子,而不是兒子的行為像父親。
舉個例子:從一個基類中派生,響應一個虛命令,產生不同的結果。
使用繼承性的結果就是可以建立一個類的家族,在認識這個類的家族時,就是把匯出類的對象當作基類的對象。這樣認識的重要性在於:我們可以只針對基類寫出一段程式,但它可以適應於這個類的家族,因為編譯器會自動找出合適的對象來執行操作。這種現象又稱為多態性。而實現多態性的手段又叫稱動態綁定。
簡單的說,建立一個父類的對象,它的內容可以是這個父類的,也可以是它的子類的,當子類擁有和父類同樣的函數,當使用這個對象調用這個函數的時候,定義這個對象的類(也就是父類)裡的同名函數將被調用,當在父類裡的這個函數前加Mute關鍵字,那麼子類的同名函數將被調用。通俗點說就是父類不加Mute關鍵字,那麼子類的同名函數將會被覆蓋。
小結
方法
1,父類物件類型指向子類對象。
優點
1,在函數或方法的參數中父類物件類型可以同時接受多種子類對象傳入參數。
2,當子類對象被父類物件類型指向時,可以直接調用父類方法,但是不能直接調用子類的特有方法,如果需要必須調用,需將物件類型強制轉換為子類類型。
局限性
1,不能子類物件類型指向父類對象。(編譯器會警告,但是可以正常運行,還是不建議這樣處理)
2,繼承於同一個父類對象的子類之間不能互相指向。(編譯器會警告,但是可以正常運行,還是不建議這樣處理)
Objective-C文字總結