標籤:資料 sp c 代碼 r bs 學習 不同的 對象
1.在C的學習中,我們寫一段代碼,通常考慮整個事件的發展的過程,開始--經過--結果,而在OC中,這樣的思想需要整個轉變為,做一件事,需要哪些人物、事物參與,他們分別負責做什麼。比如我們玩植物大戰殭屍遊戲:
C的思維方式:殭屍出現--以某速度往前走--植物投射炮彈--殭屍受傷減血--植物再投射炮彈--殭屍受傷減血--植物投射--殭屍死亡
OC的思維方式:參與整個事件的人物、事物有:
殭屍 :1.殭屍名字(如路障殭屍)、殭屍的道具(如路障) 2.走路、失血、死亡
植物:1.植物類型(如豌豆射手) 2.投射炮彈
這當中,殭屍、植物就稱為“類”(就是誰或者什麼),以殭屍為例,“名字、道具”是殭屍這個類的屬性,“走路、失血、死亡”稱為殭屍的行為方法(也就是負責做什麼)。我們可以用殭屍的這些屬性和方法,來建立對象,比如路障殭屍,就是殭屍類創造出來的一個對象,類可以無數個對象。
名詞解釋, super:父類,self:對象本身
2.OC的三個特性:繼承、封裝多態
--繼承:在OC中,如果一個類B的部分屬性和方法與另一個類A所有的屬性和方法相同,則可以讓B繼承A,來實現給A寫一份代碼,B全全擁有。
注意:1.繼承具有單向性,B繼承於A後,B具有A所有屬性和方法,當B具有額外的屬性和方法時,A不具有,此時,A稱為父類,B稱為子類
2.繼承具有先子後父的特性,如果子類重寫了父類中的某個方法,系統在執行時,會執行子類的方法。
3.NSObject 是所有類的父類,我們建立的任何一個類都繼承這個類,它的內部是所有我們在外部可調用的系統方法的實現方法。
--封裝:實現對屬性、方法等具體實現訪問的限制,對外只留出傳入資料的介面,讓寫出的代碼更具有隱秘性,就好比有一個袋子,具體實現的方法放在袋子裡,只留出口袋的開口,供外界傳入資料。同時我們可以隨時根據需求修改封裝內部的屬性、方法等,這樣也增強了項目的可維護性。
--多態:多態是指相同方法名的方法可以具有不同的實現功能,比如,在A類中有一個方法,方法名為“haveDinner”,實現是輸出“我愛吃麵條”,在B類中也有一個具有相同方法名的方法,實現可以改為輸出“我愛吃漢堡”。A與B之間可以是繼承也可以是關聯,或者沒有關係。系統方法也可以重寫實現。
從C 到 OC----從面向過程到物件導向的轉變