我在簡歷裏面寫:「精通設計模式」。 面試官問我:「多態是什麼?」git
多態是定義類型和實際類型, 通常是基於接口的形式實現的。github
Objective-C 相關代碼見,面試
https://github.com/BoxDengJZ/iOS_design_pattern設計模式
Objective-C 與 Swift 的 POP / VOP 又有些微妙的差別。設計
Java 實現多態有三個必要條件: 繼承,重寫, 向上轉型。對象
繼承, 在多態中必須存在有繼承關係的子類和父類。繼承
繼承是一種強耦合關係。接口
重寫, 子類對父類中某些方法進行從新定義。調用那些方法的時候,就會調用子類的方法。it
向上轉型, 多態中須要將子類的引用賦給父類對象,這是繼承的條件, 該引用能夠調用父類的方法和子類的方法。class
Objective-C 相關代碼中,也是這麼實現的。
https://github.com/BoxDengJZ/iOS_design_pattern
Objective-C 相關代碼與 Java 的條件一致。
感受語言具備相通性。