QF OC的多型,動態繫結及實現原理

2022-06-02 05:18:10 字數 676 閱讀 6992

多型:

封裝,繼承,多型是物件導向的三大特徵。

那多型到底是什麼呢?

多型:允許不同的類定義相同的方法,oc能自己判斷當前類所對應的方法,不會混亂。

動態型別:程式直到執行時才確定物件的型別。

動態繫結:基於動態型別,程式直到執行時才能確定要執行的方法。

多型:父類的指標可以指向子類的物件。這句話一定要深刻理解,請看幾行**:

animal * obj = [[dog alloc] init]; 

[obj eat];

雖然該obj前面是animal類,也就是說它被宣告是animal類的乙個指標,但是在執行 [obj eat];這行時才知道它其實是dog型別的,該obj指標實際上卻是指向子類dog的物件。也就說它在執行時,實際上呼叫的是dog類裡的那個eat方法。這就是多型。

oc中動態能力的原理:

oc中的每個物件預設都有乙個屬性,即isa指標。它指向了乙個「類物件」(object-class),這個物件是在編譯的時候由編譯器生成的。它裡面儲存了類的資訊,專門用來描述類。當程式執行時,它作為類的乙個例項的屬性,它會動態的告訴物件「你屬於哪個類,你有什麼方法等」。。。

多型可以提高**的靈活性和復用度。

部落格參考:點選進入

c 的動態繫結和靜態繫結及多型的實現原理 摘

c 多型的實現原理 為了支援c 的多型性,才用了動態繫結和靜態繫結。理解它們的區別有助於更好的理解多型性,以及在程式設計的過程中避免犯錯誤。需要理解四個名詞 物件的靜態型別 物件在宣告時採用的型別。是在編譯期確定的。物件的動態型別 當前物件的型別。是在執行期決定的。物件的動態型別可以更改,但是靜態型...

多型的學習(動態繫結)

動態繫結 多型 在執行期間而非編譯期間判斷所引用的物件的實際型別,根據其實際的型別呼叫其相應的方法。利用多型就可以不用instanceof來判斷其型別,並且有很好的可擴充套件性,下面只要增加鳥類就可以,其它可以不動。多型的三個必要條件 要有繼承,要有重寫,父類引用指向子類物件。package com...

JAVA的多型動態繫結

新建乙個物件時,有宣告型別和實際型別之分,如person p new male person為宣告型別,male為實際型別,如果使用p去呼叫方法已經被重寫,那麼p呼叫該方法時,呼叫的是male裡的被重寫的方法。一定可以將子類的例項轉換為父類的例項,因為子類的例項一定是他父類的例項,稱為向上轉換。pe...