Objective C與C 的聯絡與區別

2021-10-06 08:42:07 字數 1164 閱讀 1381

objective-c語言,該語言被認為是c語言的超集,賦予了c語言物件導向的能力,完全支援c/c++語言,但和c++語言的物件導向有很大不同,它是以訊息機制為底的,oc方法的本質是 訊息傳送(即objc_msgsend),底層是通過方法的 sel 查詢 imp。比如可以面向向不包含該方法的物件傳送該訊息,可以通過編譯,直到執行的時候才會報錯。下面詳細記錄他們之間的不同。

呼叫方式

//c++

objectname.

function

(pram,..

.);

//objective-c

[objectname function:pram:..

..];

.**件和.m檔案 .cpp檔案

c++語言中.**件用於宣告該類,.cpp檔案用於定義實現該類

oc中區別就是:

在.**件中宣告的屬性,外部類可以通過「類例項.屬性」來呼叫,

但在.m中宣告的則不可以,獲取和設定的方法,只能是通過setvalue:forkey和valueforkey來實現。

成員變數,有三種許可權,就是大家都知道的@private、@protected、@public ,寫在.m檔案中時,相當於是@private許可權,子類無法訪問,驗證了一下,做許可權修改也無效。而寫在.**件中,預設是@protected許可權,子類可以訪問,可以做許可權修改。因為訪問許可權指針對.**件。.**件中成員變數,外部類對其的呼叫,跟c++一樣,用->來呼叫。

而.m檔案中的@inte***ce部分為類擴充套件(extension),有三個作用:

其一,定義類私有方法的地方。

其二,實現public readonly,private readwrite的property(意思是在h標頭檔案中定義乙個屬性對外是readonly的,但在類的內部希望是可讀寫的,所以可以在m原始檔中的@inte***ce部分重新定義此屬性為readwrite,此時此屬性對外是唯讀的,對內是讀寫的)。

其三,也可在此部分申明變數和屬性,但申明的變數,屬性和方法均為私有的,只能夠被當前類訪問,相當於private。

參考:

oc屬性和成員變數在.**件和.m檔案區別

C與C 的區別與聯絡

1 c 與c語言相比有何特點 全面相容c語言 支援物件導向程式設計 c 的可重用性 可擴充性以及可維護性較好。2 c 與c語言程式結構有何不同 c語言的程式結構主要包括預處理程式 自定義型別說明 常量定義 函式定義以及主函式定義幾大部分 c語言的程式結構在c 中也是適用的,此外c 還有類的定義和使用...

C 與C的聯絡與區別

c 與c的聯絡 c 是在c 語言的基礎上開發的一種物件導向程式設計語言,應用廣泛。c 支援多種程式設計正規化 物件導向程式設計 泛型程式設計和過程化程式設計。其程式設計領域眾廣,常用於系統開發,引擎開發等應用領域,是最受廣大程式設計師受用的最強大程式語言之一 支援類 類 封裝 過載等特性 c 在c的...

C 與C語言的區別與聯絡

c 與c語言的區別與聯絡 1 c語言是面向過程的,而c 是物件導向的 2 在c語言中結構體只有成員變數,而沒成員方法,而在c 中結構體中,可以有成員變數和成員函式 3 c 是從c語言中發展而來的。教程推薦 linux c語言程式設計基本原理與實踐 c 遊戲專案 中國象棋開發 教程 c c 是c語言的...