類的定義分為兩個部分.
-> 類的宣告
@inte***ce
類名: nsobject
方法的宣告
;方法表示類的功能.
@end
-> 類的實現
@implementation類名
方法的實現;
@end
類的注意點:
a. 類必須要有宣告和實現
b. 類名用你描述的事物的名稱來命名
類名的每1個單詞的首字母必須要以大寫開頭.
c. 基本上所有的類都需要繼承於nsobject。
d. 用來表示著類事物的共同的特徵的變數必須要定義在@inte***ce的大括弧之中.
e. 定義在大括弧之中用來表示著類事物的共同的特徵的變數我們叫做. 屬性
成員變數
例項變數
欄位.......
f. 為類定義屬性的時候,屬性的名詞必須要以_開頭下劃線開頭.
語法是固定的.
@inte***ce 類名 : nsobect
@end
@implementation 類名
@end
類是無法直接使用的. 如果非要使用這個類的話,就必須要先找到這個類中的1個具體存在,那就是類的物件.
類和物件的關係: 類就是乙個模板,類中有的東西 這個類的物件也有不會多也不會少.物件就可以使用.
物件就是類的乙個具體存在。
語法: 類名 *物件名 =[類名 new];
person *p1 = [person new];
根據person這個類的模板,建立了1個物件名字叫做p1.
p1物件的特點:
-> 可以直接使用.
-> 類中定義的東西這個物件中也有不會多也不會少.
1).預設情況下,物件的屬性是不允許被外界直接訪問的.
如果允許物件的屬性可以被外界訪問,那麼就再宣告屬性的是加1個@public關鍵字.
2).訪問物件的屬性的方式
物件名->屬性名 =值;
物件名->屬性名;
(*物件名).屬性名;
平時使用的時候,使用->
類方法的宣告和實現:
1). 宣告
a. 位置:在@inte***ce的大括弧的外面.
b. 語法:
- (返回值型別)方法名稱;
- (void)run;
表示宣告了1個無返回值並且無引數的方法方法名字叫做run
2). 實現
a.位置:在@implementation之中實現
b.實現的語法:
將方法的宣告拷貝到@implementation之中.去掉分號追加大括弧1對將方法實現的**寫在大括弧之中.
3).呼叫
a. 方法是無法直接呼叫的.因為類是不能直接使用的.必須要先建立物件.
那麼這個物件中就有類中的屬性和方法了就可以呼叫物件的方法了.
b. 呼叫物件的方法.
[物件名
方法名];
1). 宣告
a.位置:在@inte***ce的大括弧的外面.
b.語法:
- (返回值型別)方法名稱:(引數型別)形參名稱;
- (void)eat:(nsstring *)foodname;
定義了1個方法這個方法沒有返回值.
這個方法的名字叫做eat:
這個方法有1個引數,型別是nsstring *型別的
引數的名字叫做foodname
- (void)eat:(nsstring *)foodname;
void eat(nsstring *foodname);
2). 實現
a.位置:在@implementation之中實現
b.語法:將方法的宣告拷貝到@implementation之中.去掉分號追加大括弧1對將方法實現的**寫在大括弧之中.
3). 呼叫
a. 方法是無法直接呼叫的.因為類是不能直接使用的.必須要先建立物件.
那麼這個物件中就有類中的屬性和方法了就可以呼叫物件的方法了.
b. 呼叫語法:
[物件名
方法名:實參];
方法頭中的資料型別都要用1個小括弧括起來.
- (返回值型別)方法名稱:(引數型別)引數名稱;
1)宣告
a.位置: 在@inte***ce的大括弧的外面.
b. 語法:
- (返回值型別)方法名稱:(引數型別)形參名稱1 :(引數型別)引數名稱2 :(引數型別)引數名稱3;
- (int)sum:(int)num1 :(int)num2;
表示宣告了1個方法這個方法的返回值型別是int型別的.
方法的名稱叫做 sum: :
有兩個引數
引數型別都是int型別
引數名稱叫做num1 num2
2).實現.
a. 位置:在@implementation之中實現
b. 實現的語法: 將方法的宣告拷貝到@implementation之中.去掉分號追加大括弧1對將方法實現的**寫在大括弧之中.
3).呼叫:
a. 方法是無法直接呼叫的.因為類是不能直接使用的.必須要先建立物件.
那麼這個物件中就有類中的屬性和方法了就可以呼叫物件的方法了.
b. 呼叫帶多個引數的語法
[物件名
方法名:實參1 :實參2 :實參3];
1).如果方法只有1個引數.要求最好這個方法的名字叫做***with:
***with***
eatwith:
eatwithfood:
這樣寫的話,那麼呼叫方法的時候看起來就像是1條完整的語句.提高了我們**的閱讀性.
遵守的規範:就是讓我們的方法呼叫的時候看起來像1條完整的語句.
2).如果方法有多個引數建議這個方法名稱:
方法名with:(引數型別)引數名稱and:(引數型別)引數名稱and:(引數型別)引數名稱;
- (int)sumwith:(int)num1 and:(int)num2;
sumwith: and:
更詳細的寫法
方法名with引數1:(引數型別)引數名稱and引數2:(引數型別)引數名稱and引數3:(引數型別)引數名稱;
OC基礎 類和物件
1.oc1 oc是物件導向 關注的是解決問題需要哪些物件。2 和c程式一樣,oc也需要通過編譯和鏈結兩個步驟。終端指令 以main.m為例 編譯 cc c main.m 執行 a.out 3 關鍵字以 開頭,字串以 開頭,其他基本語法 4 和c語言一樣,oc程式的入口依然是main函式。5 nslo...
OC 物件導向,類和物件
面向過程,c語言是一門面向過程語言,關注的是如何解決問題,需要哪些步驟 物件導向,oc是一門物件導向語言,關注的是解決問題需要哪些物件。可以對類進性操作也可以對物件進行操作,即方法,同乙個方法可以應用於不同多個物件。classorinstance method 對類和例項應用方法 inte ce 部...
ios開發之OC基礎 類和物件
本系列的文章主要來自於個人在學習前鋒教育 歐陽堅老師的ios開發教程之oc語言 一定要明確乙個要從事的方向,要不然就會感到迷茫。學習ios開發,並且從事ios開發這個行業,這就是我的選擇。看到我的部落格系列文章,其中大多是關於c qt linux網路程式設計 opengl unity3d等方面。從表...