物件導向的設計中,有乙個特性封裝性,就是將某些東西包裝和隱藏起來,讓外界無法直接使用,只能通過某些特定的方式才能訪問。
在objective-c中也可以做到這一點。
比如下面這個類:
先是介面:
// *************************==
// = file: someclass.h
// = inte***ce for someclass
// *************************==
@inte***ce someclass : nsobject
-(void) msg;
+(void) classmsg;
@end
很簡單的介面,再是它的實現和類別:
// *************************==
// = file: someclass.m
// *************************==
#import "someclass.h"
// ******************************===
// = inte***ce for hidden methods
// ******************************===
@inte***ce someclass (hidden)
+(void) hiddenclassmethod;
-(void) hiddeninstancemethod;
@end
// ***********************************==
// = implementation of hidden methods
// ***********************************==
@implementation someclass (hidden)
+(void) hiddenclassmethod
-(void) hiddeninstancemethod
@end
// ******************************==
// = implementation for someclass
// ******************************==
@implementation someclass
-(void) msg
+(void) classmsg
@end
有乙個hidden的類別,在someclass的實現中呼叫了hidden的兩個方法。
只包含someclass.h檔案的main:
// // main.m
// private method
// // created by mac on 11-8-10.
// #import
#import "someclass.h"
int main (int argc, const char * argv)
執行成功後應該可看到如下的顯示:
inside msg()...
hidden instance method
hidden class method.
inside classmsg()...
內部呼叫hidden的兩個方法是沒問題的。在main的return之前有四行注釋,把其中兩行傳送訊息的注釋取消,再編譯後可能會遇到兩種情況:
1.有警告,但是編譯成功,直接執行後可以得到如下結果:
inside msg()...
hidden instance method
hidden class method.
inside classmsg()...
hidden instance method
hidden class method.
方法確實隱藏的(從警告中可以得知),但是可以連線到。
Python 私有方法,專有方法
python的私有方法 以 雙劃線開頭,但不以雙劃線結尾,privatemethod 專有方法 以雙劃線開頭和結尾,init e.gclass person def init self,name self.name person def getname self return self.name a...
array陣列中私有方法
concat 用於連線兩個或多個陣列,該方法不會改變現有的陣列,而是返回被連線陣列的乙個副本。join 把陣列中的所有元素放入乙個字串,元素是通過指定的分隔符進行分隔的。若省略了分隔符引數,則使用逗號作為分隔符。push 向陣列的末尾新增乙個或多個元素,並返回新的陣列長度。pop 用於刪除陣列的最後...
單元測試中如何呼叫私有方法
同事遇到了需要對私有方法進行單元測試的情況,上網查了下,如果確實想僅僅對私有方法進行測試 並不推薦這樣,原因後面敘述 可以使用send方法 class a private def just show someone puts i am endend a.new.send just show,jerr...