一、多態的條件:函數
有繼承關係,有方法重寫設計
父類的聲明變量指向子類對象指針
二、多態的優勢:對象
簡化變成接口,容許類與類之間重用習慣性的明明繼承
能夠分散在不一樣的對象中,不用試圖在一個函數中考慮全部的對象接口
三、多態的原理:編譯
動態綁定:程序設計
動態類型能使程序直到執行時才肯定對象所屬類型變量
動態類型綁定能使程序執行時才肯定要對對象調用的實際方法原理
OC不一樣於傳統程序設計語言,它能夠在運行時加入新的數據類型和心的程序模塊:動態類型識別、動態綁定、動態加載
id類型:經過指針類型,弱類型,編譯時不進行類型檢查
四、多態的注意點
[(Cat *)c1 jump];//當父類非要用子類特有的類型時 強制類型轉化
一、若是存在多態,父類是能夠訪問子類特有的方法的
二、若是不存在多態,父類是不能夠訪問子類特有的方法的
練習:
上帝殺教師/學生/醫生
上帝殺人(人 用 Person 編譯是person 運行執行其真正的方法)