Snail OC學習之類及物件

2021-12-29 19:47:52 字數 3245 閱讀 3170

物件是對客觀事物的抽象,類是對物件的抽象。類是一種抽象的資料型別

物件導向的程式語言都是有類及物件的

類是由屬性及方法組成。

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學習之類和物件

類 是乙個函式包。類中可以放置函式和變數,類中的函式可以很方便的使用類中的變數。在類中被定義的函式被稱為類的 方法 描述的是這個類能做什麼。我們使用類名.函式名 的格式,就可以讓類的方法執行起來。在類中被定義的變數被稱為類的 屬性 使用類名.變數名的格式,可以把類中的屬性的值提取出來。類的屬性可以修...