物件是對客觀事物的抽象,類是對物件的抽象。類是一種抽象的資料型別
物件導向的程式語言都是有類及物件的
類是由屬性及方法組成。
oc中的所有官方類及自定義的類都是nsobject的直接或者間接子類
下面看看類的編寫規範
首先,command+n 新建乙個類 dog類
看到會生成兩個檔案.h和.m
.h是對屬性及方法的宣告,.m是對方法實現.
dog.**件中編寫如下
#import
@inte***ce dog : nsobject
// 前面是+號,即此函式是dog類的方法 可以直接用dog類名來呼叫
// 無需建立物件就可以呼叫,簡化**
//另乙個作用就是用來建立單例,即在整個生命週期,無論建立多少次都是同乙個物件
+ (instancetype)shareddog;
// 前面是-號的叫做物件方法
//預設的無參建構函式 如果不寫 也是會存在的預設建構函式
- (instancetype)init;
//帶乙個引數的建構函式
- (instancetype)initwithname:(nsstring *)name;
//帶兩個引數的建構函式
- (instancetype)initwithname:(nsstring *)name and***:(int)***;
//物件變數name、***的get及set方法
- (void)setname:(nsstring *)name;
- (nsstring *)name;
- (void)set***:(int)***;
- (int)***;
// 狗的乙個行為
// bark(叫) 返回值為void空,無參
- (void)bark;
//lookhome(看家)無參
- (void)lookhome;
@end
dog.m**編寫如下#import dog.h
@implementation dog
// 由此可見,利用dog類名來呼叫這個方法時 無論建立多少次物件都是同乙個dog
+ (instancetype)shareddog
return dog;
}//init開頭的方法都是初始化建構函式 一種編碼規範
// init是沒有引數的預設寫法
- (instancetype)init
return self;
}//這是具有乙個引數的初始化建構函式
- (instancetype)initwithname:(nsstring *)name
return self;
}//具有兩個引數的建構函式
- (instancetype)initwithname:(nsstring *)name and***:(int)***
return self;
}- (void)setname:(nsstring *)name
- (void)set***:(int)***
- (int)***
- (nsstring *)name
//叫得方法 實現
- (void)bark
- (void)lookhome
@endmain函式引入標頭檔案後建立幾個物件#import
#import dog.h
int main(int argc, const char * ar**)
return 0;
}下面,來介紹乙個知識點,即property屬性修飾
改寫一下dog類
首先,dog.h中 改寫成下面這樣
#import
@inte***ce dog : nsobject
@property nsstring * name;
@property int ***;
// 前面是+號,即此函式是dog類的方法 可以直接用dog類名來呼叫
// 無需建立物件就可以呼叫,簡化**
//另乙個作用就是用來建立單例,即在整個生命週期,無論建立多少次都是同乙個物件
+ (instancetype)shareddog;
// 前面是-號的叫做物件方法
//預設的無參建構函式 如果不寫 也是會存在的預設建構函式
- (instancetype)init;
//帶乙個引數的建構函式
- (instancetype)initwithname:(nsstring *)name;
//帶兩個引數的建構函式
- (instancetype)initwithname:(nsstring *)name and***:(int)***;
// 狗的乙個行為
// bark(叫) 返回值為void空,無參
- (void)bark;
//lookhome(看家)無參
- (void)lookhome;
@end
dog.m檔案中
#import dog.h
@implementation dog
// 由此可見,利用dog類名來呼叫這個方法時 無論建立多少次物件都是同乙個dog
+ (instancetype)shareddog
return dog;
}//init開頭的方法都是初始化建構函式 一種編碼規範
// init是沒有引數的預設寫法
- (instancetype)init
return self;
}//這是具有乙個引數的初始化建構函式
- (instancetype)initwithname:(nsstring *)name
return self;
}//具有兩個引數的建構函式
- (instancetype)initwithname:(nsstring *)name and***:(int)***
return self;
}//叫得方法 實現
- (void)bark
- (void)lookhome
@end可以看出來 變數、及變數的get/set方法**刪除後, 利用property來修飾的屬性 再執行main.m檔案時 沒有報錯 即property自動為我們生成了set/get方法
這就是乙個自定義的類。此類是直接繼承於nsobject父類的(@inte***ce dog : nsobject),下一篇會說繼承
乙個標準的自定義類就是這樣來寫,具體遇到問題遇到什麼需求可以適當的做些改變
C 學習 物件模型之類及物件記憶體模型
使用c 開發一年多,從今天開始系統性的總結下c 一些知識點,畢竟c 語言特性複雜而龐大,很難短時間全部掌握。首先類可以模擬c語言的struct結構體,單純的宣告乙個類a,如果a沒有被例項化,那麼a是不會占用記憶體空間。這裡的類可以理解為一種特殊資料結構型別。再來談談物件,乙個類例項化後就變成乙個物件...
C 學習筆記之 類 物件
類是描述具有相同特徵和行為的抽象。物件是類的例項。類的作用就是分類!class關鍵字 class 類名 1 字段 類的共有屬性class car比如以上的brand,price,displacement 簡單的應用 using system namespace lesson12 class main...
Python學習之類和物件
類 是乙個函式包。類中可以放置函式和變數,類中的函式可以很方便的使用類中的變數。在類中被定義的函式被稱為類的 方法 描述的是這個類能做什麼。我們使用類名.函式名 的格式,就可以讓類的方法執行起來。在類中被定義的變數被稱為類的 屬性 使用類名.變數名的格式,可以把類中的屬性的值提取出來。類的屬性可以修...