黑馬程式設計師 OC語言 封裝

2021-07-09 01:57:09 字數 1997 閱讀 9355

——- ios培訓、ios培訓、期待與您交流! ———-

封裝的實質

是指隱藏物件的屬性和實現細節,對外提供公共訪問方式,封裝是一種思想.

方法預設就是用了封裝的思想.

屬性有兩種方式操作:

1直接操作.public

2.封裝操作:通過給外部暴露兩個方法:set方法用於設定值.get方法用於獲取值.

乙個屬性的set與get方法不是必須的,看情況,如果你希望讓外部呼叫者可以設定值,

則你就給定義set方法.如果你希望外部能獲取值,就定義get方法.

一切看需求.

封裝的好處:

• 將變化隔離。 • 便於使用。 • 提高重用性。 • 提高安全性。

封裝原則:

• 將不需要對外提供的內容都隱藏起來。

• 把屬性都隱藏,提供公共方法對其訪問。

**體現:

#import 

@inte***ce

person : nsobject

-(void) smile;

/* 規範:

1.不能有返回值.

2.必須有引數,且引數型別與屬性型別一致.

3.引數名不能與屬性名一致

4.set+屬性名:首字母大寫(駝峰命名)

作用:就是給屬性(成員變數)去賦值

*/-(void) setage:(int) age;

/* 規範:

1.必須有返回值.

2.不能有引數.

3.返回值型別必須跟屬性型別一致.

4.get+屬性名:首字母大寫(駝峰命名)

作用:就是把屬性值傳遞給呼叫者.

*/-(int) getage;

@end

@implementation

person

-(void) smile

-(void) setage:(int) ageelse

//nslog(@"當前的年齡是:%d",age);

}-(int) getage

@end

int main()

關於封裝的一些思考:屬性預設的方式是@protected,假如不通過封裝,而是把屬性的訪問方式改為@pubulic,這樣外部的物件可以任意操作屬性,比如可以讓年齡設定為-1,這明顯是不符合邏輯的,所以我們需要把屬性封裝起來,限制給屬性的賦值.這就是常用的設定器(set方法),對應的,如果想要獲取某乙個屬性的值,需要設定乙個接收器(get方法),這樣就保證了屬性賦值的安全型,而且其他物件想要操作封裝的屬性的時候也可以直接呼叫以上兩個方法,提高了效率.

類方法封裝

好處: 不需要建立物件,可以直接通過類名呼叫的方法,稱為類方法.

作用:呼叫方便.執行效率高.在定義方法的時候盡量用類方法.

類方法不能使用屬性–侷限性.

注意:定義方法時:到底是用類方法還是物件看在方法裡是否要用到屬性.如果要用到屬性則用物件方法.反之,用類方法.

#import 

@inte***ce

person : nsobject

-(void)setname:(char *)name;

-(void)smile;

+(void)smile;

+(void)haha:(char *)str;

@end

@implementation

person

-(void)setname:(char *)name

//這裡是物件方法:可以直接呼叫屬性

-(void)smile

//這裡是類方法:不可以直接訪問屬性

+(void)smile

//這裡也是個類方法,不可以*直接*訪問屬性,但是可以先把屬性當做引數傳進去,然後在方法裡面使用屬性.

+(void)haha:(char *)str

@end

int main()

黑馬程式設計師 OC封裝

物件導向的三大特性 封裝 繼承和多型 在開發過程中,考慮到安全性要求,我們一般不在成員變數名前面使用 public protected等關鍵字修飾,而是使用set方法來為物件提供成員變數的值。set方法的內部也可以對一些不合理的賦值進行篩選過濾。set方法的作用 為外界提供乙個設定成員變數值的方法 ...

黑馬程式設計師 OC語言初學

android培訓 ios培訓 期待與您交流!c語言的基礎上,增加了一層最小的物件導向語法 完全相容c語言 可以在oc 中混入c語言 甚至是c 可以使用oc開發mac os x平台和ios平台的應用程式 基本上所有關鍵字都是以 開頭 下面列舉一些常見的關鍵字,看一眼就行了,不用去翻資料查詢它們的含義...

黑馬程式設計師 OC語言 多型

1.多型的基本概念 某一類事物的多種形態 oc物件具有多型性 2.多型的體現 person p student new p age 100 p walk 子類物件賦值給父類指標 父類指標訪問對應的屬性和方法 3.多型的好處 用父類接收引數,節省 4.多型的侷限性 不能訪問子類的屬性 可以考慮強制轉換...