您好,登錄后才能下訂單哦!
一、Objective-C簡述
Objective-C通常寫作ObjC和較少用的Objective C或Obj-C,是擴充C的面向對象編程語言。Objective-C主要用于:編寫iOS操作系統(如:iPhone、iPod touch、iPad 等蘋果移動終端設備 )應用程序和Mac OS X操作系統應用程序的利器。 Objective-C的流行當歸功于iPhone的成功,因為Objective-C被用于編寫iPhone應用程序。
Objective-C是非常實際的語言。它是一個用C寫成、很小的運行庫,只會令應用程序的尺寸增加很小,和大部分OO系統使用極大的VM執行時間會取代了整個系統的運作相反。Objective-C寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發行本)亦和Smalltalk系統要使用極大的內存來開啟一個窗口的情況相反。因此,Objective-C它完全兼容標準C語言(C++對C語言的兼容僅在于大部分語法上,而在ABI(Application Binary Interface)上,還需要使用extern "C"這種顯式聲明來與C函數進行兼容),而在此基礎上增加了面向對象編程語言的特性以及Smalltalk消息機制。
OC是C語言的超集,允許在OC中使用C語言源代碼,編譯器兼容C語言程序,具有完善的面向對象特征、包含一個運行時系統、類庫豐富等特點。
雖然Objective-C是C的超集,但它也不視C的基本型別為第一級的對象。和C++不同,Objective-C不支援運算子多載(它不支持ad-hoc多型)。亦與C++不同,但和Java相同,Objective-C只容許對象繼承一個類別(不設多重繼承)。
二、面向對象
面向對象編程 OOP(Object Oriented Programming,面向對象程序設計)是一種計算機編程架構
面向對象的語言:C++,Java,C#
面向對象具有三大特征:封裝、繼承、多態。
封裝:隱藏內部實現,穩定外部接口
繼承:子類可以直接復用父類中的成員
多態:不同對象對同一個消息的不同相應
三、類和對象
面向對象的核心是類和對象
(一)什么是類
類是一組具有相同(特征)屬性和行為(功能)的事物的集合,類名是標示符的一種,需要符合規范,通常類名的第一個字母大寫,且不能有下劃線,如果有多個單詞則使用駝峰標識,在對方法進行類的劃分中,一般采取的做法是誰最熟悉這個方法就把這個方法劃分給誰。在OC中,對象對方法的調用稱為消息機制,即向既定的對象發送了什么消息。
(二) 什么是對象
時間萬物皆對象,即哲學的“客觀存在”。在生活中,可能是一輛車,一只筆,或者是一張京東訂單,工商銀行的一張卡等等都是對象。對象描述了一個物體的特性值和行為實現
(三) 類和對象的關系
類和對象的關系就像是狗類和具體的狗的關系一樣。
類是對象的抽象,是概念或者模板,而對象是類的具體實現,屬于類
類描述這些類事物應該具體哪些行為和特征:而對象真正去實現行為和特征
(四)面向對象編程中使用對象完成程序
開發中:先定義類,再創建對象,然后使用對象
定義類包含兩個部分:借口部分和實現部分,分開寫
1、接口部分:對外聲明類的特征和行為。(類似于說明書)h文件中
2、實現部分:對內實現行為。(內部的具體實現)m文件
接口部分(h文件)
接口部分標志:@interface·······@end
作用:聲明類的實例變量和方法,即特征行為
包含內容:類名、父類名、實例變量、方法等
實現部分(m文件)
實現部分標志:@implementation·······@end
作用:實現方法,即實現類的行為
例如:創建一個AudiCar類
類的接口部分:
類的實現部分如下:
類的調用部分如下:
(五)常見的錯誤
(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)函數內部不能直接通過成員變量名訪問對象的成員變量
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。