OC語言基礎知識


 

OC語言基礎知識

一、面向對象

OC語言是面向對象的,c語言是面向過程的,面向對象和面向過程只是解決問題的兩種思考方式,面向過程關注的是解決問題涉及的步驟,面向對象關注的是設計能夠實現解決問題所需功能的類。

術語:OO面向對象、OOP面向對象編程

 

二、類

(一)關於類

類的設計只關注三個東西:類名、屬性和方法

注意:一般名詞都是類,擁有相同屬性和行為的對象都可以抽象為一個類,類名是標識符的一種,需要符合規范,通常類名的第一個字母大寫,且不能有下划線,如果有多個單詞則使用駝峰標識。在對方法進行類的划分中,一般采取的做法是誰最熟悉這個方法那么就把這個方法划分給誰。在OC中,對象對方法的調用稱為消息機制,即向既定的對象發送了什么消息。

 

(二)簡單內存分析

類創建對象,每個對象在內存中都占據一定的存儲空間,每個對象都有一份屬於自己的單獨的成員變量,所有的對象公用類的成員方法,方法在整個內存中只有一份,類本身在內存中占據一份存儲空間,類的方法存儲於此。

每個對象內部都默認有一個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函數后面,在使用之前只要有聲明就可以

 

三、OC對象與函數

OC對象與函數有着本質的區別:

(1)方法的實現只能寫在@implementation··@end中,對象方法的聲明只能寫在@interface···@end中間

(2)對象方法都以-號開頭,類方法都以+號開頭

(3)對象方法只能由對象來調用,類方法只能由類來調用,不能當做函數一樣調用

(4)函數屬於整個文件,可以寫在文件中的任何位置,包括@implementation··@end中,但寫在@interface···@end會無法識別,函數的聲明可以再main函數內部也可以在main函數外部。

(5)對象方法歸類\對象所有

(6)函數調用不依賴與對象

(7)函數內部不能直接通過成員變量名訪問對象的成員變量

 

四、類和方法的設計

工具類:基本沒有任何的成員變量,里面的方法基本都是類方法。

注意:在對象方法中可以調用類方法。

需求:設計一個工具類:一個計算器類,要求(1)返回π,(2)計算兩個整數的和,(3)計算某個整數的平方。

類的聲明部分

 

類的實現部分

 

測試程序:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM