建立完類之後:
假設在person類中包含人員姓名(name)、年齡(age)
其中姓名是保護的,年齡是公開的。
nsobject是基類,test實現了nsobject@inte***ce
test : nsobject
注意成員變數不宣告任何關鍵字的話是預設可訪問性@protected
成員的可訪問性通過下面三個關鍵字宣告:
@private 私有成員,只有當前類可以訪問;
@protected 受保護成員,只有當前類或子類可以訪問(如果沒有新增任何修飾則預設為@protected);
@public 公共成員,所有類均可訪問;
在objc中可訪問性修飾符除了這三種,還有乙個@package不太常用,它類似於c#中的internal在框架內是公共的,但是框架外是私有的(也就是只能在乙個框架內可以訪問)
注意幾點:
objc中所有的物件型別的變數都必須加上「」,在objc中物件其實就是乙個指標(例如之前看到的nsstring也是如此,但是基本型別不用加」」);
objc中使用進行方法呼叫,在objc中方法呼叫的本質就是給這個物件或類傳送乙個訊息;
在objc中類的例項化需要兩個步驟:分配記憶體、初始化;
類的初始化呼叫了父類的init方法,如果使用預設初始化方法進行初始化(沒有引數),記憶體分配和初始化可以簡寫成[person new];
公共成員的呼叫使用「->」操作符;
在objc中方法分為靜態方法和動態方法兩種,動態方法就是物件的方法,靜態方法就是類方法,這一點跟其他高階語言沒有區別。在objc中使用「-」定義動態方法,使用「+」定義靜態方法。如果乙個方法在.h中有宣告則該方法是公共方法,如果沒有在.h中宣告直接在.m中定義則該方法是私有方法,外部無法訪問。
即test.h完整**如下-(void)setname:(nsstring *)aname;
-(nsstring *)name;
建立類生成的另乙個檔案 test.m#import
@inte***ce
test : nsobject
-(void)setname:(nsstring *)aname;
-(nsstring *)name;
@end
在objective-c中方法的引數型別、返回值型別需要放到()中,而且引數前必須使用冒號,並且此時冒號是方法名的一部分。#import "test.h"
@implementation
test
-(void)setname:(nsstring *)aname
-(nsstring *)name
@end
接下來是 主檔案 main.m
其中#import
#import "test.h"
int main(int argc,const
char * argv)
}
test * abc=[[test alloc]init];
還可以寫成
或test *abc=[test alloc];
abc=[abc init];
test *abc=[test new];
Objective C之類和物件
面向過程程式設計 procedure oriented programming,pop 以事件為中心,關心完成該事件的詳細步驟,一步一步如何實現.物件導向程式設計 object oriented programming,oop 以事物為中心,也就是引數事件的參與者,設計事物的功能,而完成事件只是事物...
Objective C語法之類和物件
下圖中是一段的類宣告的語法展示,宣告了乙個叫做 myclass 的類,它繼承於根類 nsobject。根類可以被所有的其他類直接或間接繼承。下圖是乙個方法的語法展示,方法的宣告由以下幾個部分構成 方法型別識別符號,返回型別,乙個或多個方法簽名關鍵字,以及引數型別和名稱。類的實體變數的訪問許可權 對應...
Objective C語法之類和物件
下圖中是一段的類宣告的語法展示,宣告了乙個叫做 myclass 的類,它繼承於根類 nsobject。根類可以被所有的其他類直接或間接繼承。下圖是乙個方法的語法展示,方法的宣告由以下幾個部分構成 方法型別識別符號,返回型別,乙個或多個方法簽名關鍵字,以及引數型別和名稱。1.2 生成student.h...