objective-c語言是物件導向的高階程式語言,因此,它具有物件導向程式設計所具有的一些特性,即:封裝性、繼承性和多型性。
今天介紹一下objective-c中的多型性。
多型的3個條件:繼承:各種cell繼承自basecell
重寫:子類cell重寫basecell的setmodel:方法
指向:父類cell指標指向子類cell
一、什麼是多型
**多型:不同物件以自己的方式響應相同的訊息的能力叫做多型。**
由於每個類都屬於該類的名字空間,這使得多型稱為可能。類定義中的名字和類定義外的名字並不會衝突。類的例項變數和類方法有如下特點:
二、在objective-c中如何實現多型
在objective-c中是通過乙個叫做selector的選取器實現的。在objective-c中,selector有兩個意思,當用在給物件的原始碼訊息時,用來指方法的名字。它也指那個在原始碼編譯後代替方法名的唯一的識別符號。
編譯後的選擇器的型別是sel有同樣名字的方法、也有同樣的選擇器。你可以使用選擇器來呼叫乙個物件的方法。
選取器有以下特點:
(1) sel和@selector
選擇器的型別是 sel。@selector指示符用來引用選擇器,返回型別是sel。
例如:
sel responsesel;
responsesel = @selector(loaddatafortableview:);
可以通過字串來得到選取器,例如:
responsesel = nsselectorfromstring(@"loaddatafortableview:");
也可以通過反向轉換,得到方法名,例如:
nsstring *methodname = nsstringfromselector(responsesel);
(2) 方法和選取器
選取器確定的是方法名,而不是方法實現。這是多型性和動態繫結的基礎,它使得向不同類物件傳送相同的訊息成為現實;否則,傳送 訊息和標準c中呼叫方法就沒有區別,也就不可能支援多型性和動態繫結。(3) 方法返回值和@引數型別另外,同乙個類的同名類方法和例項方法擁有相同的選取器。
訊息機制通過選取器找到方法的返回值型別和引數型別,因此,動態繫結(例:向id定義的物件傳送訊息)需要同名方法的實現擁有相 同返回值型別和相同的引數型別;否則,執行時可能出現找不到對應方法的錯誤。有乙個例外,雖然同名灶方法和例項方法擁有相同的選取器,但是它們可以有不同的引數型別和返回值型別。
IOS開發之路 Objective C 復合
今天先補充一下很有必要記住的東西.物件 d,i 整數 u 無符整形 f 浮點 雙字 x,x 二進位制整數 o 八進位制整數 zu size t p 指標 e 浮點 雙字 科學計算 g 浮點 雙字 s c 字串 s pascal字串 c 字元 c unichar lld 64位長整數 long lon...
ios開發Objective C可變引數函式
首先作為乙個coder 很多時候會遇到自己不能解決的問題需要上網查資料,而且不知道我自己水平沒能理解 還是演示demo就有問題,或者大家都沒發現的乙個問題。這裡重新按照自己的理解重新寫乙個使用oc可變引數函式的方法。本人能力有限,如果遇到錯誤或 問題,麻煩大家指出 nsarray actionuse...
iOS開發Objective C基礎之 多型
objective c語言是物件導向的高階程式語言,因此,它具有物件導向程式設計所具有的一些特性,即 封裝性 繼承性和多型性。今天介紹一下objective c中的多型性。一 什麼是多型 多型 不同物件以自己的方式響應相同的訊息的能力叫做多型。由於每個類都屬於該類的名字空間,這使得多型稱為可能。類定...