一 實例方法可見度,方法
1.實例變量的可見度
可見度 特點
public(公有的) 實例變量可以在類的外部和內(nèi)部操作
PRotected(受保護的,默認的) 實例變量只能在該類和其子類內(nèi)操作
private(私有的) 實例對象只能在該類內(nèi)訪問
注:所謂的內(nèi)部,指的是相應(yīng)類的@implementation 和 @end 之間
思考:為什么不使用@public 關(guān)鍵字:
1.使用@ public 關(guān)鍵字,暴露了類內(nèi)部的細節(jié).
2.不符合面向?qū)ο笳Z言的三大特性之一 __封裝
二 .OC中的方法分兩種:類方法和實例方法
1.類方法:只能類使用,例如:+(id)alloc 注意:類方法中不能使用實例變量
實例方法:只能對象使用,例如:- (void)sayH;
2.[person sayHi];
在 OC 中沒有”student 調(diào)用 sayHi"這種表述
在 OC 中使用消息發(fā)送機制:[ receiver message ];
正確表述:給 student 對象發(fā)送 sayHi 消息.
a.student 接收到消息,即方法 sayH;
b. student 找到 sayHi 方法,并執(zhí)行.
3.” : “ 標示參數(shù),不能省略.有冒號必須有參數(shù).
4.setter,getter 的書寫格式.
OC 里規(guī)定了 setter 和getter 的書寫格式.
如果一個實例變量是 int age ;或者 int _age;
setter 的書寫格式如下: - (void)setAge:(int)age; 即 set+ 首字母大寫的實例變量名
(忽略下劃線).
getter 的書寫格式如下:- (int)age; 即返回值類型與變量類型一致,方法名由于實例變量名相同(忽略下劃線)
三.與實例變量的關(guān)系
無論是 setter 還是 getter 內(nèi)部操作的都是實例變量
每一個實例變量都需要一對 setter 和 getter 方法
四:自定義初始化方法
- (id)init 這個初始化方法只能給實例變量設(shè)置默認值,不靈活.
- (id)initWithName: 自定義初始化方法,根據(jù)需求定義初始化方法.
示例:
- (id)initWithName:(NSString *) name sex:(NSString *)sex;
- (id)initWithName:(NSString *)name sex:(NSString *)sex{
_name = name;
_sex = sex;
return self;
}
五. #import
導(dǎo)入頭文件,即:導(dǎo)入頭文件中的內(nèi)容到當(dāng)前類.
#import “” 導(dǎo)入自定義類,# import<> 導(dǎo)入類庫中的頭文件.
功能類似于 C 語言中的# include, 但是可以避免頭文件被重復(fù)導(dǎo)入
容易出現(xiàn)循環(huán)導(dǎo)入頭文件問題
六:@ class
告訴編譯器@ class 后的字符串作為類名使用,并未導(dǎo)入類的接口內(nèi)容.
有效避免嵌套循環(huán)導(dǎo)入.
總結(jié):
a. 實例變量有三種常見的可見度: @public, @protected,@private
b.@public 違背了封裝特性,面向?qū)ο箝_發(fā)中很少使用;@protected 默認可見度,自己和子類中能使用 —>訪問實例變量;@ private 自己類中能使用—>訪問實例變量.
c. 方法是 OC 的核心,采用消息機制:[ receive message].
“-“message 由對象來調(diào)用;
“+”message 由 類來調(diào)用.