OC隱藏和封裝 理解封裝和使用訪問控制符

2021-06-27 23:54:42 字數 1788 閱讀 1027

//  main.m

//  oc封裝

//  created by goddog on 15/1/2.

1.封裝的理解:(1)指將物件對狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,而是通過該類提供的方法來實現

對內部資訊的操作和訪問。

(2)隱藏類的實現細節,讓使用者只能通過事先預定的方法來訪問資料,從而可以在該類方法裡加入控制邏輯,限制

對成員變數的不合理訪問。

(3)將物件的成員變數和實現細節隱藏起來,不允許外部直接訪問,

把方法暴露出來,讓方法來控制對這些成員變數進行安全的訪問和操作。總之,該隱藏的隱藏,該暴露的暴露。

2.使用訪問控制符: (1)@private(當前類訪問許可權),該類成員變數被修飾之只能在當前類的內部訪問,實現部分定義的成員變數

預設是使用這種訪問許可權。

(2)@package(與映像訪問許可權相同),當前類和當前類實現的同乙個映像的任意地方訪問。

(3)@protected(子類訪問許可權),當前類和當前類的子類任意地方訪問,類的介面部分預設使用的就是該許可權

(4)@public(公共訪問許可權),任意地方可以訪問。

3.如果乙個oc類的每個成員變數都被使用@private限制,並為每個成員變數都提供setter和getter方法,這才是符合規範。

4.原則:(1)類裡絕大部分成員變數應該使用@private限制,但是有些方法只是輔助實現該類的其他方法(工具方法),把這些方法定

義在類的實現部分則可。

(2)如果某個類要作為父類,則用@protected限制這些成員變數

(3)希望暴露出來給其他類自由呼叫的方法應該在類介面部分定義,然後在類實現部分實現它們。

#import #import "person.h"

int main(int argc, const char * argv)

return 0;

}

//

// person.h

// oc封裝

//// created by goddog on 15/1/2.

//#import @inte***ce person : nsobject

//使用@private限制成員變數

//提供方法來操作name

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

//提供方法來獲取_name成員變數的值

-(nsstring*) name;

//提供方法來設定age

-(void) setage:(int) age;

//提供方法來獲取_age成員變數的值

-(int) age;

@end

//

// person.m

// oc封裝

//// created by goddog on 15/1/2.

//#import "person.h"

@implementation person

//提供方法來設定_name成員變數

-(void) setname:(nsstring *)name

else

}//提供方法來獲取_name成員變數的值

-(nsstring*) name

//提供方法設定_age的值

-(void) setage:(int)age

else

}}//提供獲取_age的方法

-(int) age

@end

OC封裝繼承和例項化

person new 做了三件事 1 申請記憶體空間 2 給例項初始化 3 返回空間首位址 例項變數儲存在堆區 指標 物件名 儲存在棧區 物件方法儲存在 區 呼叫方法先找到p所指向的堆區的指標 isa然後再找到isa所指向的 區的方法 物件方法只能由物件來呼叫,類方法只能由類來呼叫,不能當做函式來呼...

OC語言筆記(五) OC封裝和復合

一 繼承 封裝 類別的總結 1 功能 繼承 擁有父類屬性和方法 可以加方法屬性,可以改方法實現 封裝 做乙個類,做乙個方法 類別 可以加方法 2方法呼叫 繼承 父類或者子類的物件呼叫 封裝 封裝好的這個新類的物件或者類名呼叫 類別 基礎類的物件呼叫 3關於self 繼承 因為用的父類或者子類的物件呼...

2018 12 10 JAVA隱藏和封裝

封裝是物件導向程式設計的三大特性之一。封裝的目的 隱藏類方法實現的細節 讓使用者只能通過預先定義的方法來訪問資料,從而可以在方法中加入一些控制邏輯,限制對成員變數的不合理訪問。簡單的理解就是,把成員變數隱藏起來,暴露方法來提供成員的修改和訪問public class student public v...