oc關鍵字定義為 @class
o-c特有的語句for(。。in 。。)迭代迴圈,其他的條件和迴圈語句和c一樣
oc對物件導向的概述
(1)基類:nsoject
(2)一般的繼承是單繼承,使用協議@protocol 實現多重繼承
(3)所有的函式都是虛函式
id型別
oc中每個目標都可以表達為id型別,泛型。可以認為是nsobject *或者 void nil
等同於null,表示乙個目標指標
類定義oc的類分為2個檔案,
.h檔案存放類,函式的宣告(宣告的關鍵字 @inte***nce @end)
.m檔案存放類的具體實現(實現關鍵字)
物件和類的方法
「+」 表示類的方法
「-」表示物件的方法 -(int)返回值f 函式的名字: (int) x;引數(有個「:」表示有幾個引數,從第二個引數起「:」前面必須加空格)
對於方法宣告的講解
「:」表示繼承 @inte***ce dog : nsobject{} @end
「{}」之間只能寫字段(如:int age),不能寫函式
右括號和@end間接寫的是函式
建立物件
dog *dog=[dog alloc] ; 乙個類的名字 + alloc
初始化建構函式
[dog init]; 凡是以init…開頭的都是建構函式
銷毀物件
[dog release];
字段定義
三種作用域:@public @protected(保護,在類本身或者子類中) @private (只能在類的內部)
補充:預設的是protected
函式全部用public
變數必須定義在類{}之間的地方
注:在c中函式和字段是可以重名的
類的宣告
必須帶「*」 即表示指標也表示引用 dog(物件) * mydog (變數名)
訪問 mydog.dog(變數名訪問字段)或者使用空格
多引數方法
帶兩個引數(函式名為f::)
兩種寫法 -(float)f(int)x 【空格】 :(int)y 不提倡這種寫法
(2)-(float)f(int)x 【空格】g:(int)y g:表示標籤 (第一引數不能有標籤,第乙個函式名就相當於第乙個引數的標籤,是為了方便閱讀)
如何呼叫方法
無引數-(int)foo;
int ret=[obj foo] 調obj的方法,沒有引數,調方法的時候用
乙個引數
-(int)foo:(int)a;
int ret=[obj foo:10]
帶標籤-(int)foo:(int)a andb(int)b;
int ret=[obj foo:10 andb:2];
oc不是嚴格的函式過載
-(int)g:(int)x;
-(int)g:(folat)x;兩個函式的函式名都為」g:」 在oc中是錯誤的,但是c中是可行
函式作用域宣告
.h中定義的所有函式都是public型別的
私有化的解決方法
在.m檔案中使用categoy
oc中類的宣告 定義
import xyzperson.h inte ce person nsobject 資料成員 nsstring name 屬性宣告 property nsstring firstname property readonly nsstring lastname property nsnumber y...
類的宣告 定義及應用
1 類是對現實世界中事物的抽象,將具有相同屬性的一類事物稱作類,類的例項稱為物件。類是一種複雜的資料型別,它是將不同型別的資料和與這些資料相關的操作封裝在一起的集合體,類具有對資料的抽象性 隱藏性和封裝性。類物件的行為類的內部資料和方法決定,外部行為通過操作介面實現。2 類 物件的定義 包括兩部分 ...
c 類模板中靜態成員變數的宣告定義
我們知道,c 中,類的靜態成員是要在.cpp檔案中定義的,如果在.h中定義,會出現重複定義。但是在寫類模板時,一般所有的 都是放在.h檔案中的,如果要做分離是一件很麻煩的事。那如果出現了靜態成員怎麼辦?如 ca.h template class ca 對於這個m vec怎麼辦呢?難道要我們在每個使用...