OC語言基礎知識編程
1、面向對象函數
OC語言是面向對象的,c語言是面向過程的,面向對象和麪向過程只是解決問題的兩種思考方式,面向過程關注的是解決問題涉及的步驟,面向對象關注的是設計可以實現解決問題所需功能的類。工具
術語:OO面向對象、OOP面向對象編程測試
2、類spa
(一)關於類設計
類的設計只關注三個東西:類名、屬性和方法3d
注意:通常名詞都是類,擁有相同屬性和行爲的對象均可以抽象爲一個類,類名是標識符的一種,須要符合規範,一般類名的第一個字母大寫,且不能有下劃線,若是有多個單詞則使用駝峯標識。在對方法進行類的劃分中,通常採起的作法是誰最熟悉這個方法那麼就把這個方法劃分給誰。在OC中,對象對方法的調用稱爲消息機制,即向既定的對象發送了什麼消息。指針
(二)簡單內存分析對象
類建立對象,每一個對象在內存中都佔據必定的存儲空間,每一個對象都有一份屬於本身的單獨的成員變量,全部的對象公用類的成員方法,方法在整個內存中只有一份,類自己在內存中佔據一份存儲空間,類的方法存儲於此。blog
每一個對象內部都默認有一個isa指針指向這個對象所使用的類。
[p eat];表示給p所指向的對象發送一條eat消息,調用對象的eat方法,此時對象會順着內部的isa指針找到存儲於類中的方法,執行。
isa是對象中的隱藏指針,指向建立這個對象的類。
(三)類的聲明和實現
1)類的聲明:
這裏聲明瞭一個Person類,這個類擁有一個@public修飾的屬性(成員變量),以及一個對象方法put。
2)類的實現:類的聲明能夠理解爲類中的方法的實現
3)類的調用:在主函數首先建立了一個Person類型的對象(先調用alloc分配存儲空間,後調用init方法初始化爲0),並定義了一個Person類型的指針指向建立的這個對象,以後初始化對象成員變量_age的值爲20,而後調用了對象的put方法,打印輸出。
4)練習,建立一個Person類。
類的聲明:
類的實現以下:
類的調用以下:
(四)常見錯誤
(1)@interface @end和@implementation @end不能嵌套包含
(2)只有類的聲明沒有類的實現
(3)漏寫@end
(4)兩個類的聲明嵌套(能夠把順序打亂)
(5)成員變量沒有寫在{}裏
(6)方法的聲明寫在了{}裏面
(7)在聲明時對類的成員變量進行初始化,請注意成員變量不能脫離對象而獨立存在
(8)方法沒法像函數那樣的調用
(9)成員變量和方法不能用static等關鍵字修飾,不要和c語言混淆
(10)類的實現能夠寫在mian函數後面,在使用以前只要有聲明就能夠
3、OC對象與函數
OC對象與函數有着本質的區別:
(1)方法的實現只能寫在@implementation··@end中,對象方法的聲明只能寫在@interface···@end中間
(2)對象方法都以-號開頭,類方法都以+號開頭
(3)對象方法只能由對象來調用,類方法只能由類來調用,不能當作函數同樣調用
(4)函數屬於整個文件,能夠寫在文件中的任何位置,包括@implementation··@end中,但寫在@interface···@end會沒法識別,函數的聲明能夠再main函數內部也能夠在main函數外部。
(5)對象方法歸類\對象全部
(6)函數調用不依賴與對象
(7)函數內部不能直接經過成員變量名訪問對象的成員變量
4、類和方法的設計
工具類:基本沒有任何的成員變量,裏面的方法基本都是類方法。
注意:在對象方法中能夠調用類方法。
需求:設計一個工具類:一個計算器類,要求(1)返回π,(2)計算兩個整數的和,(3)計算某個整數的平方。
類的聲明部分
類的實現部分
測試程序: