面向?qū)ο?/h1>

1壁榕、什么是對(duì)象

在學(xué)習(xí)語言的過程中,都會(huì)遇到兩個(gè)問題:面向過程和面向?qū)ο蟆?code>面向過程:分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步的實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)一次調(diào)用就可以了梨睁。
面向?qū)ο?/code>:把構(gòu)成問題的事務(wù)分解成各個(gè)對(duì)象郭宝,然后協(xié)調(diào)各個(gè)對(duì)象之間的聯(lián)系和通信涡贱,建立對(duì)象的目的不是為了完成一個(gè)步驟钓葫,而是為了描述某個(gè)事務(wù)在整個(gè)解決問題的步驟中的行為。
那么什么是對(duì)象呢嵌灰?此對(duì)象可不是說男女相親時(shí)候的那個(gè)對(duì)象弄匕,而是泛指所有具體的事物,都可以稱之為對(duì)象沽瞭。

2迁匠、什么是類?

類的定義:將具有相同屬性和共同行為的一組對(duì)象的集合放在一個(gè)單元中,就稱之為類城丧。
比如說:白貓延曙,黑貓,灰貓等等亡哄,它就屬于貓類枝缔。如果貓,狗蚊惯,豬放在一起愿卸,可以抽象出動(dòng)物類。那么貓類就屬于動(dòng)物類的一個(gè)子類截型,而動(dòng)物類則成為貓類的父類趴荸。
類的屬性:對(duì)象或者實(shí)體所擁有的特征在類中表示為類的屬性。
例如:貓的顏色宦焦。
類的方法:對(duì)象執(zhí)行的操作成為類的方法发钝。
例如:貓會(huì)抓老鼠。也就是說波闹,對(duì)象的行為酝豪。

3、什么是封裝

在Objective-C中舔痪,一個(gè)對(duì)象是由很多屬性和方法組成的,將屬性和方法相結(jié)合锌唾,共同體現(xiàn)對(duì)象的特性锄码,稱為封裝。封裝可以做到隱藏內(nèi)部實(shí)現(xiàn)晌涕,穩(wěn)定外部接口滋捶。

4、類和對(duì)象的關(guān)系

它們的關(guān)系是余黎,對(duì)象是類的實(shí)例重窟,類是對(duì)象的模板。對(duì)象是通過new className產(chǎn)生的惧财,用來調(diào)用類的方法;類的構(gòu)造方法 巡扇。
類不是憑空造出來的,一般是為了解決具體問題從現(xiàn)實(shí)中抽象出來的垮衷。

5厅翔、iOS中的類

創(chuàng)建一個(gè)mySchoolProject的項(xiàng)目,新添加一個(gè)學(xué)生類搀突。

新添加的學(xué)生類.png

由圖可以看到刀闷,這個(gè)類有兩個(gè)文件:.h和.m文件。
在Objective-C中,類是由接口(interface)和實(shí)現(xiàn)(implemention)兩部分組成的甸昏。

@interface部分

1顽分、#import指令
#import指令和C語言的#include指令類似,但是#import指令能避免頭文件被重復(fù)包含的問題施蜜。且#import<>包含iOS框架類庫(kù)里面類的頭文件卒蘸,#import""包含項(xiàng)目里自定義類的頭文件。
2花墩、實(shí)例變量
在Objective-C中悬秉,類的特征都是用變量來表示的,這種變量稱為實(shí)例變量(成員變量)冰蘑,聲明在@interface下的“{}”中和泌。
3、方法聲明
在接口文件中的功能方法是沒有實(shí)現(xiàn)的祠肥,只是描述了類的行為應(yīng)有哪些武氓,類似C中的函數(shù)原型;功能的實(shí)現(xiàn)要在.m文件中實(shí)現(xiàn)仇箱。并且Objective-C中的繼承語法是“類名:父類名”县恕。

@implemention

實(shí)現(xiàn)部分中的方法分為:實(shí)例方法類方法,實(shí)例方法要實(shí)例化對(duì)象后通過對(duì)象進(jìn)行調(diào)用剂桥,實(shí)例方法允許調(diào)用實(shí)例方法和實(shí)例變量忠烛。以-開頭。
類方法:以+開頭权逗,類方法可以調(diào)用類方法美尸,但類方法不可以調(diào)用實(shí)例方法,但是類方法可以通過創(chuàng)建對(duì)象來訪問實(shí)例方法斟薇。
方法名又稱為選擇器师坎。
類的命名規(guī)范
類名要首字母大寫,方法名首字母小寫堪滨,方法名中其他單詞首字母要大寫胯陋,以提高程序的可讀性。

創(chuàng)建和使用對(duì)象

//創(chuàng)建對(duì)象袱箱,完成對(duì)象的聲明遏乔,內(nèi)存分配,初始化
        Student *stu = [[Student alloc] init];
或者
Student *stu2 = [Student new];

Objective-C創(chuàng)建對(duì)象的語法:

類名 *對(duì)象名= [[類名 alloc] init];
類名 *對(duì)象名= [類名 new];

Objective-C中給對(duì)象屬性賦值:

stu1->name = @"張三";
        stu1->age = 15;

賦值語法:

對(duì)象名->實(shí)例變量名 = 具體值发笔;

Objective-C中的方法

消息傳遞模型(Message passing):是Objective-C中的核心機(jī)制按灶,在Objective-C中,沒有方法調(diào)用這種說法筐咧,只有消息傳遞鸯旁。
//重寫init方法

- (id)init{
    if(self = [super init]){
        name = @"李四";
        age = 17;
    }
    return self;
}

其中噪矛,if(self = [super init]),此處的[super init]仍然返回子類對(duì)象铺罢,目的是為了初始化父類的實(shí)例變量艇挨。如果返回nil,說明父類沒有alloc成功韭赘。

便利初始化函數(shù)

在使用對(duì)象的過程中缩滨,對(duì)象和對(duì)象的實(shí)例變量的值往往是不同的,所以我們需要在init方法時(shí)傳入個(gè)性化的數(shù)據(jù)泉瞻,在框架類庫(kù)中的一些類里有一系列的以init開頭的方法脉漏,這些方法就是便利初始化函數(shù)。
在.h文件里聲明便利初始化函數(shù)

- (id)initWithName:(NSString *)aName andAge:(int)anAge;

在.m文件里實(shí)現(xiàn)便利初始化函數(shù)

- (id)initWithName:(NSString *)aName andAge:(int)anAge{
    if (self = [super init]) {
        name = [aName copy];
        age = anAge;
    }
    return self;
}

便利構(gòu)造器袖牙。

上面的便利初始化函數(shù)創(chuàng)建對(duì)象首先還是要調(diào)用alloc方法對(duì)對(duì)象分配內(nèi)存空間侧巨,然后再初始化對(duì)象,代碼還是非常繁瑣鞭达。于是在Cocoa中司忱,有些方法通過吧內(nèi)存分配過程和初始化過程組合起來完成對(duì)象的創(chuàng)建,這種方法稱為--便利構(gòu)造器畴蹭。它們都是類方法坦仍。
在.h文件里聲明便利初始化函數(shù)

+ (id)initWithName:(NSString *)aName andAge:(int)anAge;

在.m文件里實(shí)現(xiàn)便利初始化函數(shù)

//便利構(gòu)造器
+ (id)initWithName:(NSString *)aName andAge:(int)anAge{
    Student *student = [[Student alloc] initWithName:aName andAge:anAge];
    return student;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叨襟,隨后出現(xiàn)的幾起案子繁扎,更是在濱河造成了極大的恐慌,老刑警劉巖糊闽,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梳玫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡墓怀,警方通過查閱死者的電腦和手機(jī)汽纠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門卫键,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傀履,“玉大人,你說我怎么就攤上這事莉炉〉稣耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵絮宁,是天一觀的道長(zhǎng)梆暮。 經(jīng)常有香客問我,道長(zhǎng)绍昂,這世上最難降的妖魔是什么啦粹? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任偿荷,我火速辦了婚禮,結(jié)果婚禮上唠椭,老公的妹妹穿的比我還像新娘跳纳。我一直安慰自己,他們只是感情好贪嫂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布寺庄。 她就那樣靜靜地躺著,像睡著了一般力崇。 火紅的嫁衣襯著肌膚如雪斗塘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天亮靴,我揣著相機(jī)與錄音馍盟,去河邊找鬼。 笑死台猴,一個(gè)胖子當(dāng)著我的面吹牛朽合,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饱狂,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼曹步,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了休讳?” 一聲冷哼從身側(cè)響起讲婚,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俊柔,沒想到半個(gè)月后筹麸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雏婶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年物赶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片留晚。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酵紫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出错维,到底是詐尸還是另有隱情奖地,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布赋焕,位于F島的核電站参歹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏隆判。R本人自食惡果不足惜犬庇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一僧界、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臭挽,春花似錦捎泻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赤赊,卻和暖如春闯狱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抛计。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工哄孤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吹截。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓瘦陈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親波俄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晨逝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容