1、什么是面向?qū)ο蟆?/h3>類是抽象的,不具體的。就像有些東西可以歸為一類,比如說(shuō)狗,貓,豬。它們都是動(dòng)物,我們就可以歸為一類。而貓,狗就是動(dòng)物類中的一個(gè)對(duì)象。
2、什么是類;
把數(shù)據(jù)及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存的整體——對(duì)象。對(duì)同類對(duì)象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行處理。類通過(guò)一個(gè)簡(jiǎn)單的外部接口與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通信。程序流程由用戶在使用中決定。
3、如何定義一個(gè)類;
聲明類的目的,告訴系統(tǒng)類所有包含的屬性和方法。
4、類中可以定義兩種方法;
(1)、“-” 號(hào)方法 獨(dú)享方法:
? ? a、可以直接訪問(wèn)對(duì)象的屬性
? ? b、必須使用對(duì)象調(diào)用
? ? c、可以直接調(diào)用其他的對(duì)象方法
(2)、+號(hào)方法 類方法
? ? 不可直接訪問(wèn)對(duì)象屬性
? ? 必須使用類調(diào)用
? ?不可以直接調(diào)用對(duì)象方法
5、封裝;
setter方法
(1)、一定是獨(dú)享方法
(2)、一定沒有返回值
(3)、方法名一定是以set開頭后面跟上名稱去掉下劃線首字母大寫
(4)、有參數(shù)類型與屬性相同
getter方法
(1)、一定是對(duì)象方法
(2)、一定沒有返回值
(3)、方法名是屬性名去掉下劃線 沒有參數(shù)
注意:
(1)如果某一屬性只提供getter方法沒有提供setter方法我們稱之為只讀屬性反之稱為只寫屬性,setter、getter方法都有稱為可讀可寫屬性
(2)、setter方法另外一個(gè)好處就是可以監(jiān)聽屬性的變化
點(diǎn)語(yǔ)法;提供setter、getter方法后訪問(wèn)屬性可以用點(diǎn)語(yǔ)法方式訪問(wèn)屬性。
點(diǎn)語(yǔ)法的注意點(diǎn):用于給成員變量賦值,如果不是給成員變量賦值不建議用點(diǎn)語(yǔ)法
6、self關(guān)鍵字
self不能離開類;
(回顧枚舉的創(chuàng)建)typedef ?enum?{? ?}
self相當(dāng)于類方法中的類,但是 self不只能調(diào)用類方法,也可以調(diào)用對(duì)象方法;如果self在對(duì)象方法中就代表self相當(dāng)于調(diào)用當(dāng)前的那個(gè)對(duì)象,如果self在類方法中,那么代表調(diào)用當(dāng)前類方法的那個(gè)類
總結(jié):只要關(guān)注self在哪一種方法中;如果在類方法中就代表當(dāng)前類;如果在對(duì)象方法中就代表當(dāng)前調(diào)用該方法的對(duì)象。
注意:self會(huì)自動(dòng)區(qū)分類方法和對(duì)象方法,如果在類方法中用self調(diào)用對(duì)象方法會(huì)報(bào)錯(cuò):如、
+(void)corfomeWith
{
[self closeFlshlight ];
}
+(void)closeFlshlight
{
[self openFlshlight?]
} ? ? ? ? 會(huì)報(bào)錯(cuò)。
self使用場(chǎng)景:
可以用于在對(duì)象方法之間相互調(diào)用;
可以用于區(qū)分成員變量與局部變量同名的情況
類是抽象的,不具體的。就像有些東西可以歸為一類,比如說(shuō)狗,貓,豬。它們都是動(dòng)物,我們就可以歸為一類。而貓,狗就是動(dòng)物類中的一個(gè)對(duì)象。
把數(shù)據(jù)及對(duì)數(shù)據(jù)的操作方法放在一起,作為一個(gè)相互依存的整體——對(duì)象。對(duì)同類對(duì)象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行處理。類通過(guò)一個(gè)簡(jiǎn)單的外部接口與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通信。程序流程由用戶在使用中決定。
聲明類的目的,告訴系統(tǒng)類所有包含的屬性和方法。
(1)、“-” 號(hào)方法 獨(dú)享方法:
? ? a、可以直接訪問(wèn)對(duì)象的屬性
? ? b、必須使用對(duì)象調(diào)用
? ? c、可以直接調(diào)用其他的對(duì)象方法
(2)、+號(hào)方法 類方法
? ? 不可直接訪問(wèn)對(duì)象屬性
? ? 必須使用類調(diào)用
? ?不可以直接調(diào)用對(duì)象方法
setter方法
(1)、一定是獨(dú)享方法
(2)、一定沒有返回值
(3)、方法名一定是以set開頭后面跟上名稱去掉下劃線首字母大寫
(4)、有參數(shù)類型與屬性相同
getter方法
(1)、一定是對(duì)象方法
(2)、一定沒有返回值
(3)、方法名是屬性名去掉下劃線 沒有參數(shù)
注意:
(1)如果某一屬性只提供getter方法沒有提供setter方法我們稱之為只讀屬性反之稱為只寫屬性,setter、getter方法都有稱為可讀可寫屬性
(2)、setter方法另外一個(gè)好處就是可以監(jiān)聽屬性的變化
點(diǎn)語(yǔ)法;提供setter、getter方法后訪問(wèn)屬性可以用點(diǎn)語(yǔ)法方式訪問(wèn)屬性。
點(diǎn)語(yǔ)法的注意點(diǎn):用于給成員變量賦值,如果不是給成員變量賦值不建議用點(diǎn)語(yǔ)法
self不能離開類;
(回顧枚舉的創(chuàng)建)typedef ?enum?{? ?}
self相當(dāng)于類方法中的類,但是 self不只能調(diào)用類方法,也可以調(diào)用對(duì)象方法;如果self在對(duì)象方法中就代表self相當(dāng)于調(diào)用當(dāng)前的那個(gè)對(duì)象,如果self在類方法中,那么代表調(diào)用當(dāng)前類方法的那個(gè)類
總結(jié):只要關(guān)注self在哪一種方法中;如果在類方法中就代表當(dāng)前類;如果在對(duì)象方法中就代表當(dāng)前調(diào)用該方法的對(duì)象。
注意:self會(huì)自動(dòng)區(qū)分類方法和對(duì)象方法,如果在類方法中用self調(diào)用對(duì)象方法會(huì)報(bào)錯(cuò):如、
+(void)corfomeWith
{
[self closeFlshlight ];
}
+(void)closeFlshlight
{
[self openFlshlight?]
} ? ? ? ? 會(huì)報(bào)錯(cuò)。
self使用場(chǎng)景:
可以用于在對(duì)象方法之間相互調(diào)用;
可以用于區(qū)分成員變量與局部變量同名的情況