黑馬程式設計師 分類以及類的本質研究

2021-06-22 17:50:41 字數 3720 閱讀 6896

----------------------

asp.net+unity開發、

.net培訓、期待與您交流! ----------------------

更改xcode

模板

category

分類,類別,類目

//可以給某乙個類擴充一些方法(不修改原來類的**)

基本形式

//宣告

@inte***ce 類名(分類名稱)

@end

//實現

@implementation 類名(分類名稱)

@end

**示例:

//

不用繼承,不改動person類的情況下給person增加一些方法/*

分類的作用:在不改變原來內容的基礎上。可以為類增加一些方法,

分類使用注意:

1

,只能增加方法,

不能增加成員變數,

如果想新增變數,可以考慮通過繼承建立子類

2

,分類方法實現中可以訪問原來類中宣告的成員變數

3.

分類可以重新實現原來類中的方法,但是會覆蓋掉原來的方法,會導致原來的方法無法使用。

不建議重寫方法

4

,方法呼叫的優先順序:

分類(最後參與編譯的分類優先)

--》原來類---》父類,多個category中如果實現了相同的方法,只有最後乙個參與編譯的才會有效

5.

在很多的情況下,往往是給系統自帶的類新增分類,如nsobject和nsstring,因為有的時候,系統類可能並不能滿足我們的要求。

6.

在大規模的應用中,通常把相應的功能寫成乙個分類,可以有無限個分類,對原有類進行擴充,一般分模組寫,乙個模組乙個分類。

分類好處

乙個龐大的類可以分模組開發

乙個龐大的類可以由多個人來編寫,更有利於團隊合作

*/

@inte***ce person :nsobject

- (void)test;

@end

@implementation person

- (void)test

@end

@inte***ce person (mj)

- (void)study;

@end

#import "person+mj.h"

@implementation person (mj)

- (void)study

- (void)test

@end

#import "person+jj.h"

@implementation person (jj)

- (void)test2

- (void)test

@end

int main()

category的練習/*

給nsstring增加乙個類方法:計算字串中阿拉伯數字的個數

給nsstring增加乙個物件方法:計算字串中阿拉伯數字的個數 */

#import

@inte***ce nsstring (number)

+ (int)numbercountofstring:(nsstring *)str;

- (int)numbercount;

@end

//@"adfasd1334zd"

@implemetation nsstring (number)

+ (int)numbercountofstring:(nsstring *)str

} return count;

return [str numbercount]; }

- (int)numbercount

}return count; }

@end

int main()

// 類庫 : 很多類的集合

類的深入研究

(一)類的本質

類本身也是乙個物件,是class型別的物件,簡稱「類物件」

class型別的定義:

typedef struct obj class *class;

類名就代表著類物件,每個類只有乙個類物件。

利用class 建立 person類

利用person 建立person型別的物件

person *p=[[person alloc] init];

獲取記憶體中的類物件有兩種方法:

(1)person *p=[[person alloc] init];

class c=[p claas];//指向類的物件的指標呼叫class方法,物件方法

(2)class c1=[person class];//使用類名呼叫class方法類方法

注意:c和c1列印出來的位址相同,class c2=[p claa];可以證明所有的物件共用乙個類方法。

(二)類的載入和初始化

//

當程式啟動的時候,就會載入一次專案中所有的類。類載入完畢後就會呼叫+load方法

+ (void)load

//

當第一次使用這個類的時候,就會呼叫一次+initialize方法

+ (void)initialize

@end

@implementation student

//在類被載入的時候呼叫,重寫方法

+ (void)load

+ (void)initialize

/*1.當程式啟動時,就會載入專案中所有的類和分類,而且載入後會呼叫每個類和分類的+load方法。只會呼叫一次。

2.當第一次使用某個類時,就會呼叫當前類的+initialize方法

3.先載入父類,再載入子類(先呼叫父類的+load方法,再呼叫子類的+load方法)

4.先初始化父類,再初始化子類(先呼叫父類的+initialize方法,再呼叫子類的+initialize方法).注意:在初始化的時候,如果在分類中重寫了+initialize方法,則會覆蓋掉父類的。

5.重寫+initialize方法可以監聽類的使用情況。 */

int main()

----------------------

asp.net+unity開發、

.net培訓、期待與您交流! ----------------------詳細請檢視:

www.itheima.com

黑馬程式設計師 類的本質

黑馬程式設計師 oc 基礎 類的本質 android培訓 ios培訓 期待與您交流!內容概括 1 深入介紹類的核心及本質。2 類的呼叫 輸出及sel 型別。類的本質 1 類本身也是個物件,是class 型別的物件,簡稱類物件。建立過程 1.class建立出 person 類物件。2.再用 perso...

黑馬程式設計師 分類

基類介面部分 import inte ce fraction nsobject property nonatomic int numerator,denominator void setto int n over int d void reduce 約分 nsstring description 顯...

黑馬程式設計師 OC基礎07 類的本質

asp.net unity開發 net培訓 期待與您交流!一 概念 類也是乙個物件,是class型別的物件,簡稱 類物件 類名就代表著類物件,每個類只有乙個類物件。typedef struct objc class class 二 獲取類物件的方式 1 類方法 class c person clas...