// 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...