天天看點

OC 基礎之——類和對象,方法

1.OC:Object-C, 面向對象的 C語言,簡稱OC. OC和 C 的差別: 1⃣️OC 是 C語言的超集, OC 是在 C語言的基礎上結合 samlltalk的優點,開發出來的語言.OC 相容所有的 C語言的文法. 2⃣️OC擴充了面向對象的思想 3⃣️運作時特性 4⃣️有豐富的類庫 OC的學習方法: 1⃣️百度,谷歌 2⃣️看官方文檔 3⃣️寫部落格,寫日志(印象筆記) 4⃣️OOP(Object Oriented Programming)

2.OC面向對象的三大特征:封裝,繼承,多态 OC的核心:類和對象是 OC 的核心. 類的概念:類就是具有相同特征和行為事物的抽象. 對象就是一個類的具體化,實實在在的東西,能摸得着看得見的事物. 萬事萬物皆對象. 對象是類的執行個體,類是對象的抽象. OC中類是怎麼實作的?

3.建立類(建立的類相當于一種新的資料類型) 1⃣️Cocoa touch Class 模闆,建立類.會生成一對檔案. h檔案和. m檔案 2⃣️.h檔案中寫的類的聲明部分,包括類的特征和行為的聲明(方法的聲明) 3⃣️.m檔案中寫的是行為的實作(方法的實作)

4.用建立的 Person類,建立出一個對象(建立一個對象包括兩步) 1⃣️開辟記憶體空間(使用 alloc 開辟記憶體空間)alloc 的作用是開辟記憶體,[]中括号的作用是:調用方法, alloc 建立出來的一個對象都會添加一個預設的指針(isa) 2⃣️初始化 Person *p = [[Person alloc]init]; Person *p= [Person alloc]; 上面調用的alloc方法會傳回配置設定好記憶體的Student對象,在等号左邊用了一個指向Person類型的指針變量p來接收這個對象,注意p左邊的*号。所有OC對象都是用指針變量來接收的,如果你不了解指針,你記住下面這點就行了:利用類名定義一個變量時,類名後面一定要帶個*号. p = [p init]; 由于init是動态方法,是以這裡使用p變量來調用,并不是使用類名來調用。init會傳回已經初始化完畢的對象,再次指派給了p變量。這時候的Person對象p才能正常使用。 可以使用—>:指向操作符,對類成員變量進行操作(類成員變量必須是@public) 調用對象方法,要用中括号[]; [p eat]; 5.在建立類方法的時候: 帶參數的方法,參數類型是 NSString, (:)冒号也是方法的一部分. -(void)say:(NSString *) something; instancetype和 id都是範類型,也就是可以指任何類型. self 是指自己,誰調用了這個方法,我就傳回誰. 方法的實作寫在. m檔案中,@ implementation 與@ end 之間寫方法的實作 (-)辨別的是執行個體的方法(動态方法),(+)辨別的是類的方法(靜态方法). 在. h和.m 檔案中可以放多個類. .h檔案中隻能放類的聲明部分,類的實作是不能放在. h檔案中的. 類的聲明和實作在一對. h和. m檔案中,和檔案名沒有關系.

6.NSObject 是所有類型的基類(父類) 類的特征和方法一定要寫在@ interface 和@ end 之間 NSString 是 OC中的字元串, NSString 不是基本資料類型,聲明的時候要加(*) NSInteger 是基本資料類型,在聲明的時候是不需要加(*)的

7.如果一個成員的變量的作用域是@ protected, 外界不能直接通路它.為了保證資料的封裝性,我們可以提供 age的 get 方法和set 方法,讓外界間接通路 age. @interface Student :NSObject @protected int age; @end -(int)age; -(void)setAge:(int)newAge;

在 OC 方法中,一個冒号:對應一個參數.而冒号(:)也是方法名的一部分,

-(void)setAge:(int)newAge andHeight:(float)newHeight; 方法名為: setAge: andHeight:

get 和 set方法的實作: -(int)age{ return  age;// 直接傳回成員變量age } -(void)setAge:(int)newAge{ age =  newAge;//将參數 newAge 指派給成員變量 age } -(void)setAge:(int)newAge andHeight:(int)newHeight{ age = newAge; height = newHeight; } OC 中有個自動化方法: 使用@proterty 和@ synthesize關鍵字