日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C setter和getter

發(fā)布時(shí)間:2024/1/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C setter和getter 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天主要學(xué)習(xí)的setter和getter的使用方法, 按照昨天所學(xué)習(xí)的內(nèi)容,首先我們要?jiǎng)?chuàng)建一個(gè)工程,另外在創(chuàng)建一個(gè)Person類(lèi)!

?

=================================================================

在Person.h中 創(chuàng)建Person類(lèi)中的幾個(gè)實(shí)例變量, 聲明setter和getter方法 ? ?"上代碼"敢問(wèn)代碼是誰(shuí)!

#import <Foundation/Foundation.h>?

/*

?實(shí)例變量可見(jiàn)度

?1.@Public 公共可見(jiàn)度: 在類(lèi)的內(nèi)部和外部都可以進(jìn)行訪問(wèn),因?yàn)橥獠恳部梢栽L問(wèn),所以他破壞了類(lèi)的封裝特性.

?2.@Private私有可見(jiàn)度: 只有當(dāng)前類(lèi)才可以訪問(wèn),子類(lèi)也無(wú)法訪問(wèn),由于子類(lèi)也無(wú)法訪問(wèn),所以破壞了類(lèi)的繼承特性.

?3.@Protected受保護(hù)可見(jiàn)度:當(dāng)前類(lèi)以及子類(lèi)可以訪問(wèn).(是默認(rèn)的)也是最適合用的!

?*/

@interface Person : NSObject

{

? ? //定義Person類(lèi)的實(shí)例變量

? ? NSString *_name;//名字 屬于字符串,所以用NSString 并且要帶*

? ? NSString *_sex; //性別 屬于字符串,所以用NSString 并且要帶*

? ? NSInteger _age; //年齡 屬于常量,所以用int類(lèi)型,NSInteger是OC中表示常量的,不需要帶*

? ? CGFloat _weight;//體重 數(shù)據(jù)常量,CGFload相當(dāng)于fload,所以不需要帶*

}

//初始化方法

- (id)init;

?

//自定義初始化方法 形式: initWith + 接口部分的各個(gè)參數(shù) 例如:

- (id)initWtihName:(NSString *)name

?? ? ? ? ? ? ? sex:(NSString *)sex

?? ? ? ? ? ? ? age:(NSInteger)age ? //參數(shù)類(lèi)型不帶*

? ? ? ? ? ? weight:(CGFloat)weight; //參數(shù)類(lèi)型不帶*

//方法聲明? 打招呼

- (void)sayHi;

?

//對(duì)各個(gè)實(shí)例變量"統(tǒng)一"設(shè)置setter方法

//setter方法的格式set卡頭 + 實(shí)例變量(去掉下劃線,并且首字母大寫(xiě)):(參數(shù)類(lèi)型NSString)參數(shù)名

- (void)setName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age weight:(CGFloat)weight;

//對(duì)各個(gè)實(shí)例變量"分開(kāi)"設(shè)置setter方法

- (void)setName:(NSString *)name;

- (void)setSex:(NSString *)sex;

- (void)setAge:(NSInteger)age;

//(返回值)set(參數(shù)名)(參數(shù)類(lèi)型)(參數(shù)名)

- (void)setWeight:(CGFloat)weight;

?

//對(duì)各個(gè)設(shè)置好setter方法的實(shí)例變量, 分別設(shè)置getter方法

//getter格式:返回值為對(duì)應(yīng)實(shí)例變量的類(lèi)型,方法名為實(shí)例變量名去掉下劃線

- (NSString *)name;

- (NSString *)sex;

- (NSInteger)age;

- (CGFloat)weight;

?

/* 最好把setter和getter方法寫(xiě)在一起例如:

- (void)setName:(NSString *)name;

- (NSString *)name;

*/

@end

?

=================================================================

在Person.m文件中, 實(shí)現(xiàn)init方法 實(shí)現(xiàn)setter和getter的方法 ? "上代碼" 敢問(wèn)代碼是誰(shuí)!

#import "Person.h" ?//此處不要誤解是在Person.h中, 這里就是Person.m文件

@implementation Person

//初始化 對(duì)每個(gè)實(shí)例進(jìn)行初始的賦值

- (id)init

{

? ? _name = @"Jack";

? ? _sex = @"male";

? ? _age = 30; //常量類(lèi)型,所以不要用@"30"

? ? _weight = 160; //age同理

? ? return self;

}

?

//調(diào)用父類(lèi)系統(tǒng)初始化的過(guò)程

- (id)initWtihName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age weight:(CGFloat)weight

{

? ? self = [super init];//調(diào)用父類(lèi)的方法

? ? if (self) { //如果調(diào)用了父類(lèi)的方法

? ? ? ? _name = name; // _name是最上面init中的參數(shù), name是initWithName后面的name

? ? ? ? _sex = sex; ? // 當(dāng)在main函數(shù)中name傳入新值的時(shí)候,_name就等于新的名字.

? ? ? ? _age = age;

? ? ? ? _weight = weight;

? ? }

? ? return self;

}

?

//========setter(賦值)和getter(取值)方法的實(shí)現(xiàn)========//

?

//方法的實(shí)現(xiàn)

- (void)sayHi

{

? ? NSLog(@"人都擁有打招呼的功能");//此處是對(duì)Person.h中聲明的方法進(jìn)行具體的實(shí)現(xiàn)!

}

?

//對(duì)各個(gè)實(shí)例變量"統(tǒng)一"實(shí)現(xiàn)setter(賦值)方法

//對(duì)各個(gè)實(shí)例變量"統(tǒng)一"實(shí)現(xiàn)getter(取值)方法

- (void)setName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age weight:(CGFloat)weight

{

? ? _name = name;

? ? _sex = sex;

? ? _age = age;

? ? _weight = weight;

}

?

//對(duì)各個(gè)實(shí)例變量"分別"實(shí)現(xiàn)setter(賦值)方法

//注:每個(gè)方法的實(shí)現(xiàn)都是與Person.h中聲明的都是一一對(duì)應(yīng)的親!

- (void)setName:(NSString *)name

{

? ? _name = name;//將傳入進(jìn)來(lái)的name的值賦給_name;可能有點(diǎn)繞,要仔細(xì)想想.

}

- (void)setSex:(NSString *)sex

{

? ? _sex = sex;

}

-(void)setAge:(NSInteger)age

{

? ? _age = age;

}

- (void)setWeight:(CGFloat)weight

{

? ? _weight = weight;

}

?

//對(duì)各個(gè)實(shí)例變量"分別"實(shí)現(xiàn)getter(取值)方法

//注:每個(gè)方法的實(shí)現(xiàn)都是與Person.h中聲明的都是一一對(duì)應(yīng)的親!

?

- (NSString *)name //name的getter方法實(shí)現(xiàn)

{

? ? return _name;

? ? //return回去的是最上面init中的_name 下面的方法同理.

}

- (NSString *)sex //sex的getter方法實(shí)現(xiàn)

{

? ? return _sex;

}

- (NSInteger)age? //age的getter方法實(shí)現(xiàn)

{

? ? return _age;

}

-(CGFloat)weight? //weight的getter方法實(shí)現(xiàn)

{

? ? return _weight;

}

?

//建議書(shū)寫(xiě)格式: 可以采用setter和getter方法寫(xiě)在一塊的方式

/*

- (void)setName:(NSString *)name

{

? ? _name = name;

}

-(NSString *)name

{

? ? return self;

}

*/

@end

=================================================================

在Main函數(shù)中,導(dǎo)入Person.h文件, 創(chuàng)建Person類(lèi)的對(duì)象,并且對(duì)對(duì)象進(jìn)行賦值,取值 ? ? "上代碼" 敢問(wèn)代碼是誰(shuí)!

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])

{

? ? //創(chuàng)建一個(gè)Person的對(duì)象

? ? Person *per = [[Person alloc] init];

? ? //給Person的對(duì)象per賦值名字

? ? [per setName:@"Henry"];

? ? //給對(duì)象per賦值性別

? ? [per setSex:@"male"];

? ? //給對(duì)象per賦值年齡

? ? [per setAge:30];

? ? //給對(duì)象per賦值體重

? ? [per setWeight:160];

? ? //NSLog(@"per的名字是:%@",per); ? ?此時(shí)打印per只是打印一個(gè)地址, 要給per對(duì)象一個(gè)指定的打印的實(shí)例.

? ? //如果此時(shí),打印的結(jié)果是:? ? per的名字是:<Person: 0x100201e10> ?

??

? ? NSLog(@"per的名字:%@ 性別:%@ 年齡:%ld 體重:%.2f",[per name],[per sex],[per age],[per weight]);

? ? //打印結(jié)果:per的名字:Henry 性別:male 年齡:30 體重:160.00

?? ?

? ? //為對(duì)象per重新賦值

? ? [per setName:@"Lily" sex:@"female" age:22 weight:96];

? ? NSLog(@"per的名字:%@ 性別:%@ 年齡:%ld 體重:%.2f",[per name],[per sex],[per age],[per weight]);

? ? //打印結(jié)果:per的名字:Lily 性別:female 年齡:22 體重:96.00

? ? //per來(lái)調(diào)用Person類(lèi)的方法

? ? [per sayHi];

? ? return 0;

}

好了,OC第二個(gè)課程學(xué)完了, 我也不知道是否會(huì)有人看我寫(xiě)的博客, 如果有看到這些的朋友,能夠給與一些建議, 因?yàn)槲乙彩浅鯇W(xué)者, 大家互相激勵(lì).

今天時(shí)間還算早,我在去學(xué)習(xí)下一章的內(nèi)容

轉(zhuǎn)載于:https://www.cnblogs.com/why2wm/p/4411170.html

總結(jié)

以上是生活随笔為你收集整理的Objective-C setter和getter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。