Objective C之類的宣告與建立

2021-07-05 01:28:43 字數 1732 閱讀 1102

建立完類之後:

假設在person類中包含人員姓名(name)、年齡(age)

其中姓名是保護的,年齡是公開的。

@inte***ce

test : nsobject

nsobject是基類,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中定義則該方法是私有方法,外部無法訪問。

-(void)setname:(nsstring *)aname;

-(nsstring *)name;

即test.h完整**如下

#import 

@inte***ce

test : nsobject

-(void)setname:(nsstring *)aname;

-(nsstring *)name;

@end

建立類生成的另乙個檔案 test.m

#import "test.h"

@implementation

test

-(void)setname:(nsstring *)aname

-(nsstring *)name

@end

在objective-c中方法的引數型別、返回值型別需要放到()中,而且引數前必須使用冒號,並且此時冒號是方法名的一部分。

接下來是 主檔案 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...