黑馬程式設計師 OC之類和物件

2021-06-21 18:06:20 字數 2911 閱讀 9430

類:類是抽象的;物件:物件是具體

------ ios培訓、android培訓、期待與您交流!-------

1、設計乙個類的步驟:<1>類名,<2>屬性,<3>行為(功能)

1>、擁有相同屬性和行為的類都可以抽象出乙個類

2、設計乙個植物大戰殭屍中的殭屍

1>類名:zoombie  

2>屬性:life、speed、gongjili

3>行為:walk、bite、die

3、類的宣告和實現

oc中完整描述乙個類:類的宣告和實現

//類的宣告:宣告物件的屬性、行為

#import

@inte***ce car(類名):nsobject //nsobject目的是讓car這個類具備建立物件的能力;

//方法(行為):方法名,引數,返回值(宣告、實現)

//只要是oc物件的方法,必須以減號-開頭

//oc方法中任何資料型別都必須用小括號()括住

//oc方法中小括號()的作用:括住資料型別

-(void)run();//方法的宣告

@end

//類的實現

//用來實現@inte***ce中宣告的方法

@implementation car(類名)

//方法的實現(說清楚方法裡面有什麼**)

- (void)run()

@end

int main()

小結:類的宣告:@inte***ce 類名:nsobject

方法宣告

@end

類的實現:@implementation 類名

方法的實現   //實現@inte***ce中宣告的方法

@end

主函式中:類名 *p = [類名 new]   //用p指向建立的新物件

p->成員變數 =   ;   //給物件的屬性(成員變數\例項變數)賦值

[p 方法名];  //用指向物件的指標呼叫方法;只能用物件呼叫函式

4、方法和成員變數

1>、如果  car *p=[car new];

p->wheels=2;

p->speed=40;

car *p2=p;

p->wheels = 4;

[p run]

輸出的結果是: 4個輪子的車子以40的時速跑起來了

這是因為p和p2都指向了同乙個物件,只要乙個指標指向的成員變數發生改變,那麼物件的成員變數就發生改變;

2>、如果  car *p=[car new];

p->wheels=2;

p->speed=40;

car *p2=[car new];

p2->wheels = 3;

p->speed=50;

p=p2;

p->wheels = 4;

[p run]

輸出的結果是:4個輪子的車子以50的時速跑起來了

只是因為雖然剛開始建立了兩個物件,但是p=p2,將p2指向的物件交給了p;

5、常見錯誤

1>、 不允許在宣告中給成員變數賦值

2>、static int wheels;不能隨便將成員變數當做c語言中的變數

6、方法與函式的區別

1>、以減號-開頭的是物件方法;

2>、物件方法的宣告必須寫在@inte***ce和@end之間;

3>、物件方法的實現必須寫在@implementation和@end之間;

4>、物件方法只能由物件呼叫;

5>、函式能寫在檔案的任意位置@inte***ce和@end之間;

6>、函式的呼叫不依賴物件; 

7>、函式內部不能直接通過成員變數訪問某個物件的成員變數;

7、如何設計乙個合理的類

/*學生:

成員變數:性別,生日,體重,最喜歡的顏色,狗

方法:吃,跑步,遛狗,餵狗

*/typedef enum***;

typedef structdate;

typedef enumcolor;

#import

@inte***ce dog:nsobject

- (void)eat;

- (void)run;

@end

@implementation dog

- (void)eat

- (void)run

@end

@inte***ce student:nsobject

- (void)eat;

- (void)run;

@end

@implementation student

- (void)eat

- (void)run

int main()

8、方法的宣告和實現

1>宣告:  -(資料型別)方法名:(資料型別)num1;

實現:[物件 方法名:num1];  

//方法名是: 方法名:

2>宣告:  -(資料型別)方法名withnum1:(資料型別)num1 andnum2:(資料型別)num2;

實現:[物件 方法名withnum1:num1 andnum2:num2];

//方法名是:方法名withnum1:andnum2;

小結:1>、oc方法中,乙個引數對應乙個冒號;

2>、冒號也是方法名的一部分;

------ ios培訓、android培訓、期待與您交流!-------

黑馬程式設計師 OC學習之類和物件

1 物件導向和面向過程 物件導向和面向過程是程式設計的兩種思考方式。物件導向,簡稱oop,它是以事物為中心,參與事件的事物是核心,完成事件只是事物的乙個小任務。面向過程,簡稱opp,它是以事件為中心,事件是核心,列出了完成事件的每乙個步驟,一步一步完成。也就是物件導向側重於從問題在尋找客體 客體的作...

黑馬程式設計師 OC 類和物件

類名 car 屬性 輪胎個數 時速 行為 跑 因為使用了nsobject import 完整地寫乙個函式 函式的宣告和實現 完整的寫乙個類 類的宣告和實現 類的宣告 宣告物件的屬性 行為 nsobject 的目的是 讓car這個類具備建立物件的能力 inte ce car nsobject 用來宣告...

黑馬程式設計師 OC 類和物件

一.物件導向和面向過程的思想 對比 oc是物件導向的,c是面向過程的。物件導向和面向過程只是解決問題的兩種不同思想 1 以用電腦聽歌為例子 a 面向過程 開啟電腦 關閉電腦 b 物件導向 不是相親的 物件 電腦 開機 關機 區別分析 面向過程關注的是解決問題需要哪些步驟 物件導向關注的是解決問題需要...