類別
類別是一種為現(xiàn)有的類添加新方法的方式。
利用Objective-C的動態(tài)運行時分配機制侨嘀,可以為現(xiàn)有的類添加新方法,為現(xiàn)有的類添加新方法的方式稱為類別catagory
1、聲明類別
聲明類別與聲明類的形式很相似
@interface? NSString(TestCateory)
-(int)lengthString;
@end
兩個特點:(1)現(xiàn)有的類位于@interface關(guān)鍵字之后惭墓,其后是位于圓括號中的類別名稱。同名類別有唯一性而姐,可以添加任意多的不同名類別腊凶。
(2)可以向其添加類別的類以及類別的名稱,列出添加的方法, 不可以添加新的實例變量拴念。
2钧萍、實現(xiàn)類別
@implementation NSString(TestCateory)
-(int)lengthString{
}
@end //在實現(xiàn)部分也包括類名、類別名和新方法的實現(xiàn)代碼
3政鼠、類別的局限性
有兩方面局限性:
(1)無法向類中添加新的實例變量.
(2)名稱沖突风瘦,即當類別中的方法與原始類方法名稱沖突時,類別具有更高的優(yōu)先級缔俄。類別方法將完全取代初始方法從而無法再使用初始方法弛秋。
4、類別的作用
類別主要有3個作用:
(1)將類的實現(xiàn)分散到多個不同文件或多個不同框架中俐载。
(2)創(chuàng)建對私有方法的前向引用蟹略。
(3)向?qū)ο筇砑臃钦絽f(xié)議。
擴展
類擴展Class extensions
1,類擴展聲明格式@interface MyClass(), 可以在類擴展中聲明屬性和實例變量遏佣。
2,類的Extension 可以當作是匿名的 category
3,定義在里面的方法不能被其它的 category 覆蓋掉挖炬,因為找不到 reference. 用這個來實現(xiàn)某種意義上的 private method.
繼承
object-c不支持多重繼承,只能單繼承状婶,一個類只能有一個父類意敛。
1,方法重寫:若子類中的方法與父類的某一方法具有相同的方法名、返回類型和參數(shù)表膛虫,則新方法覆蓋原有方法草姻。
2,方法重載:類中可以創(chuàng)建多個方法,他們具有相同的方法名稍刀,但具有不同的參數(shù)和不同的定義撩独,調(diào)用方法時通過傳遞給他們不同個數(shù)和類型的參數(shù)來覺定使用哪個方法敞曹。 方法名一定相同;方法的參數(shù)表必須不同综膀,包括參數(shù)的個數(shù)和類型澳迫,以此區(qū)分不同的方法體; 方法的返回類型和修飾符可以相同也可以不同剧劝。
3,self:一個類中的方法調(diào)用同一個類的另一個方法是使用self橄登,代表本身,相當于this讥此。
4,super:表示父類拢锹,可以使用super訪問父類中被子類隱藏或重寫的方法。