objective C物件導向理解(上)

2021-07-03 23:17:51 字數 2735 閱讀 3843

在objc中定義乙個類需要兩個檔案.h和.m:

demo 在.h

檔案中

#import 

//由於使用了nsobject,所以匯入此標頭檔案

//nsobject是基類,person實現了nsobject

@inte***ce

person : nsobject

@end

.m檔案

#import 

#import

"person.h"

int

main(

int

argc,

const char

* argv)

return

0;}

objc中所有的物件型別的變數都必須加上「*」,在objc中物件其實就是乙個指標

如果乙個方法在.h中有宣告則該方法是公共方法,如果沒有在.h中宣告直接在.m中定義則該方法是私有方法

方法的生命在h檔案的end前面

//宣告乙個動態方法,沒有返回值

-(void

)setname:(nsstring *)name;

//宣告乙個靜態方法,沒有返回值

+(void

)showmessage:(nsstring *)info;

在m中使用

//實現乙個動態方法

-(void

)setname:(nsstring *)name

//實現乙個靜態方法

+(void

)showmessage:(nsstring *)info

通常乙個成員的訪問不會直接通過成員變數而是通過屬性暴漏給外界

h檔案  第乙個括號是返回值型別,第二個是屬性型別  

//宣告age的setter、getter方法

-(int

)age;

-(void

)setage:(

int)age;

m實現   呼叫屬性的時候需要在屬性名字前面加_劃線  

//實現age的setter、getter方法

-(int

)age

-(void

)setage:(

int)age

這兩個檔案使用和宣告都需要寫出屬性名稱和冒號,在之前要加-符號,然後大括號裡面寫入做得事情

呼叫例項

int 

main(

int

argc,

const char

* argv)

return

0;}

objc中可以通過宣告@property,同時通過@synthesize自動生成getter、setter方法(在新版本中甚至甚至都不用通過@synthesize只宣告就可以使用)。我們通過一段**來說明這個問題(為了方便大家檢視**,在下面的**中暫時去掉前面定義的成員變數、屬性等)

person.h

#import 

@inte***ce

person : nsobject

@property

nsstring *birthday;

@property

nsstring *position;

@property

nsstring *degress;

@property

nsstring *education;

@property float

weight;

-(void

)printinfo;

@end

person.m檔案
#import 

"person.h"

@implementation person

@synthesize birthday;

@synthesize position;

@synthesize degress=_degress;

@synthesize education;

-(void

)printinfo

@end

main.m

#import 

#import

"person.h"

int

main(

int

argc,

const char

* argv)

通過上面的**我們可以看到最簡單的方法就是直接通過@property就可以宣告乙個變數(例如weight屬性),不需要進行實現即可直接使用;還可以使用@property宣告再用@synthesize去實現(例如上面的birthday屬性),不僅如此在實現的時候還可以指定實現此屬性時使用哪個成員變數(例如degress屬性)。

屬性到成員變數,為什麼[ p printinfo]是_weight? 如下:

鍵字this用於表示當前物件,其實在objc中也有乙個類似的關鍵字self,只是self不僅可以表示當前物件還可以表示類本身,也就是說它既可以用在靜態方法中又可以用在動態方法中。

s etname: andage:

方法是乙個動態方法,此時self就代表呼叫物件;而在showmessage方法中self呼叫了類的靜態方法printinfo,此時self代表呼叫的類;因此可以總結出在objc中self就代表當前方法的呼叫者。

參考自:

objective c物件導向

oop object oriented programming 特徵 多型 繼承 封裝 兩部分組成 1.inte ce部分 定義類的公共介面和類的資料成員 2.implementation部分 實現這些方法的實際方法 main檔案中新增friend類 inte ce 部分 inte ce frien...

Objective C 物件導向初體驗

1.類的宣告 1 1 inte ce開始,end結束 1 2變數和方法不能混在一起,例項變數必須放在 內 1 3沒有static const的例項變數。在.m檔案中可以宣告static靜態屬性 屬於類,不屬於物件。同樣,也沒有const方法,沒有友元方法。1 4 宣告的方法是protect,宣告是p...

Objective C 01 物件導向

物件導向 object oriented,oo 是軟體開發方法 物件導向是一種對現實世界理解和抽象的方法.object oriented programming oop 物件導向程式設計 什麼叫物件導向?感覺還是很抽象的東西,舉個例子,小明想買電腦,但是他什麼都不懂,於是就打 找到懂電腦的小黃,讓他...