標籤:
一、類和對象的概念
OC中有兩個很關鍵的概念就是類和對象,類和對象的關係就如同模具和用這個模具製作出的物品之間的關係。一個類為它的全部對象給出了一個統一的定義,而他的每個對象則是符合這種定義的一個實體,因此類和對象的關係就是抽象和具體的關係。
建立對象:
建立對象需要現有類,對象需表述清楚應該具備的屬性和功能(行為) 格式[行為執行者 行為名稱]
建立類:
需關心三項條件:
事物名稱(類名):人(Person)
屬性:身高(height)、年齡(age)等
行為(功能):跑(run)、吃(eat)
註: 1.一般名詞都是類
2.擁有相同(或者相似)屬性和行為的對象都可以抽象出來一個類
3.類名的第一個字母必須大寫;
4.不能有底線,如果有多個英文單片語成,用駝峰標示
5.那個行為哪個類最清楚,就把這個行為設計到那個對象裡
二、類的聲明與實現
- 完整的寫一個類/函數,需要兩個步驟,類的聲明和實現(定義)
- 類的聲明:
@interface 類名
例:
@interface Car
{
// 這裡聲明對象的屬性
}
// 這裡聲明一些行為(方法)
@end
@implementation 類名
// 這裡是一些方法的實現
@end
例:
@implementation Car
// 方法的實現
@end
代碼練習(類的建立與實現):
// oc中的 NSObject聲明在<Foundation/Foundation.h>中
#import <Foundation/Foundation.h>// 類名:Car// 屬性:輪胎個數 wheels 、速度 speed// 方法:跑// 定義一個函數:需要函數的聲明和實現// 定義一個類: 需要類的聲明和實現// 類的聲明// oc關鍵字自比須以@開頭,// 類名開頭的第一個字母必須以大寫字母開頭,如果有多個單詞每個單詞的開頭必須時大寫字母,要使用駝峰標示// NSObject表示使這個類具備建立對象的能力
//@interface用來聲明成員變數/執行個體變數,和對象方法。@interface Car: NSObject{ // @public可以讓外部的指標間接訪問成員變數 @public int wheels; int speed;}/* 1 oc對象方法必須以減號開頭。 2 對想方法的傳回值必須用括弧括住。 3 方法的聲明規則:(傳回值)方法名:參數 4 oc方法中括弧只括住資料類型 */-(void)run;@end// 類的實現:@implementation Car// 方法的實現:說清楚聲明中的方法-(void)run{ NSLog(@"這輛車跑起來了");}@endint main(int argc, const char * argv[]){ // oc中只能通過類來建立對象 // 在oc中想要只想一些行為就先寫一個[行為執行者 行為名稱] // oc中建立的對象只能通過指標來操作 // [Car new]每次都會建立一個新對象,並且會返回新對象本身(對象的地址) Car *p = [Car new]; // 通過指標來訪問成員變數 // 給p指向的類的wheels屬性賦值4, // 給p指向的類的speed屬性賦值為300; p -> wheels = 4; p -> speed = 300; // 給p指向的類發送一條run訊息,來調用run方法的實現。 [p run]; // 要訪問類內部的成員變數必須使用指標來訪問 NSLog(@"輪胎個數 = %d,速度為= %d",p ->wheels,p ->speed); return 0;}
● 成員變數和屬性必須寫在@interface 和 @end中間。
● 成員變數不允許初始化 。
● 成員變數不允許使用static修飾 。
● 類的實現可以寫在mian函數後面,但是聲明必須寫在main函數前面進行聲明。
《黑馬程式員》類和對象(Objective - c)