OC中的分類,類擴充套件和繼承之間的關係

2021-08-15 23:18:01 字數 763 閱讀 6109

基本概念

分類是在不改變原始碼或者不知道原始碼的情況下,對原類進行方法的擴充,但是不能新增屬性。

類擴充套件是匿名的分類。

繼承則是用乙個新類擁有被繼承類的所有非真私有的的屬性和方法,並且可以對其擴充套件方法和屬性。

詳解catgory可以容許你為乙個存在的類,新增方法,甚至在你不知道原始碼的情況下,不能新增屬性,這裡指的是狹義的分類。

分類新增的方法如果和原類方法一樣,則會優先呼叫分類的方法。因為分類載入是在**執行之前,所以整個專案中使用到原類新增方法的地方都會呼叫分類新加的方法,在類擴充套件新新增方法不訪問類的例項變數的情況下,可以不用import引入標頭檔案的情況下使用。不同的類擴充套件不可以新增相同的方法。

通過category 增加到類中的方法會被這個類的所有子類繼承,就和此類的其它方法一樣。分類沒有個數限制。

extensions是匿名的分類,是在類的實現**塊之外可以為自己新增需要的方法和屬性。這些方法和屬性都是私有的,只能在類的實現**塊中去掉用,外部無法使用。

異同點分類,類擴充套件和繼承都可以為乙個類新新增方法。

分類只能新增方法不能新增成員變數。

類擴充套件新增的方法和成員變數都是私有的,只能在當前類的實現**塊中呼叫。

繼承新增的方法不能成為父類的一部分。

分類新增方法和原類方法同名,則會覆蓋原類的方法,並且分類的方法優先順序更高。當多個分類有同名方法時,最後乙個編譯的會覆蓋前邊的。分類中,可以只定義方法但是不去實現,呼叫的時候,會呼叫最後乙個編譯的。

繼承中子類會覆蓋父類方法。

擴充套件中擇會直接報衝突。

iOS 繼承 分類和類擴充套件

繼承是指乙個新類擁有被繼承類 父類 的全部屬性和方法。例如,只有繼承nsobject,才有建立物件的能力。nsobject是大部分類的基類 根類,root class 當a類繼承b類,a類就擁有b類中所有成員變數 屬性 和方法。這也是繼承的主要目的。使用場景 當我們可以說通b是乙個a時,就可以使用b...

31 oc分類和類擴充套件

分類基本概念 書寫category的格式 分類的宣告 inte ce classname categoryname newmethod 在類別中新增方法 不允許在類別中新增變數 end classname 需要給哪個類擴充方法 categoryname 分類的名稱 newmethod 擴充的方法 分...

OC 中類的繼承

繼承的思想 繼承 當多個類出現部分相同的例項變數和方法時,就考慮用繼承.繼承的使用 將多個類中相同的部分的例項變數的方法提出來,寫成乙個公共的父類.繼承 子類繼承父類會將裡面所有除了宣告為 private的例項變數,以及私有方法之外,其餘內容都會被繼承.所以如果子類中有和父類同樣的內容,可以全部刪除...