Obj C中如何實現私有方法

2021-09-01 16:56:54 字數 1995 閱讀 7910

物件導向的設計中,有乙個特性封裝性,就是將某些東西包裝和隱藏起來,讓外界無法直接使用,只能通過某些特定的方式才能訪問。

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