object-c中的點調用和權限

1.如果你學過JAVA語言的的話,點調用的經常使用到的。

在JAVA中創建一個學生類:

publicclass student {

private String name;

private String age;

publicvoid setName(String name){

this.name  = name;

}

public String getName(){

returnname;

}

}

如果我們要調用student中的setName方法直接使用創建student.setName("張三")就可以使用setName方法,由於在JAVA中我們的類的屬性通常都是私有的不可以直接調用的。所以要調用set方法設置值.


2.上面的例子只是回顧下什麼叫做點調用:Object-c例子:

//-------------------------------------------------------------定義文件

#import <Foundation/Foundation.h>

@interface what : NSObject{

@public  

int _age ;

@public

int _number;


}

-(void) setAge:(int) newAge;

-(int) age;

-(void) setNumber:(int) newNumber;

-(int) number;

@end


//-------------------------------------------------------------實現文件

#import "what.h"


@implementation what

-(int)age{

NSLog(@"ageget方法");

return_age;

}

-(void)setAge:(int)newAge{

NSLog(@"ageset方法");

_age = newAge;

}


-(int)number{

NSLog(@"numberget方法");

return_number;

}


-(void)setNumber:(int)newNumber{

NSLog(@"numbeget方法");

_number = newNumber;

}

@end

//-------------------------------------------------------------main方法

#import <Foundation/Foundation.h>

#import "what.h"

int main(int argc, constchar * argv[])

{

@autoreleasepool {

what *my  = [[whatalloc] init];

       //這裏調用了setAge

       my.age = 20;

       //這裏調用了setNumber

       my.number = 100;

       //這裏調用了get方法

       NSLog(@"my age is %i;and my number is %i",my.age,my.number);


   }

return0;

}

------------------------------------------------------------------

當我們運行上面的程序後會打印:

2014-04-15 23:04:51.400 點調用[588:303] ageset方法

2014-04-15 23:04:51.402 點調用[588:303] numbeget方法

2014-04-15 23:04:51.402 點調用[588:303] ageget方法

2014-04-15 23:04:51.402 點調用[588:303] numberget方法

2014-04-15 23:04:51.403 點調用[588:303] my age is 20;and my number is 100

------------------------------------------------------------------

從打印的結果來看,我們的Objec-c在使用點調用的時候,調用的是get或者set方法。

把打印的代碼修改一下:


NSLog(@"my age is %i and my number is %i",my->_age,my->_number);


打印結果爲:

------------------------------------------------------------------

2014-04-15 23:08:11.194 點調用[632:303] ageset方法

2014-04-15 23:08:11.204 點調用[632:303] numbeget方法

2014-04-15 23:08:11.205 點調用[632:303] my age is 20 and my number is 100

------------------------------------------------------------------

從上面的打印可以看出我們沒有調用get方法。



3.這裏我要補充一下,這裏我們使用了到了Object-c中的權限關鍵字:@public,

Object-c中權限有3種:

@public:任何類都可以方法

@protected:子類可以訪問

@private:本類可以訪問

在Object-c中默認的權限是@protected,也就是說子類可以訪問。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章