[轉]Objective-c中@interface、@implementation、@protocal

原處:http://blog.csdn.net/l271640625/article/details/8393531html

如下Objective-c簡稱OCjava

從事java開發的程序員們都知道,在java中interface是接口的意思,java中類是用class聲明,接口用interface聲明,是兩個獨立的部分,只有在類聲明要實現某個接口時,他們二者才創建了關係,例如:程序員

[html]  view plain copy print ?
 
  1. interface AI{  
  2.     void print();  
  3. };  
  4. class AC{  
  5. };  

這時候,AI和AC是獨立存在,AC不會由於沒有和AI創建關係而編譯錯誤,將AC作如下修改後,AI才和AC創建了關係,AC必須實現AI中聲明的方法才能經過編譯。

spa

[html]  view plain copy print ?
 
  1. class AC implement AI{  
  2.     void print(){  
  3.         system.out.println('Hello World');  
  4.     }  
  5. };  


如今,咱們來看Objective-c,網上你們都將oc中的interface理解爲「非正式協議(或說接口)」,prototal理解爲「正式協議(或說接口)」,我以爲那樣理解起來雖然不困難,可是很變扭,因而我作一點本身的理解:
一、protocal就至關於java中的interface;
二、而interface和implementation共同表明一個類,二者的組合至關於java中的class,即oc中的類必須包括兩部分,interface部分和implementation部分,這纔是oc中的一個類的完整聲明;而後OC中將成員變量和成員方法的聲明部分放置在interface部分中,包括繼承關係,protocal實現關係,都在interface裏面的頭部進行聲明,而後將實現部分放置在implementation部分中,至關因而將類拆分紅聲明和實現兩部分,這兩部分缺一不可,因此在OC中,不妨不要將interface叫作接口,直接叫作類聲明部分來得容易理解多了,簡而言之,oc中interface是類的一個部分,和implementation共同組成一個完整的類。

泛型


OC中的類型id,它能夠認爲是一種特殊的指針:能夠指向任何類型的對象。id 再加上protocal(即oc中的接口),可以達到相似java中泛型的效果

.net

[html]  view plain copy print ?
 
  1. #import <Foundation/Foundation.h>  
  2.   
  3.   
  4. @protocol A  
  5. @end  
  6.   
  7.   
  8. <strong style="color:white;background-color:#880000">@interface</strong> A : NSObject<A>  
  9. -(void) test:(id<A>) obj;  
  10. @end  


注意這裏的 -(void) test:(id<A>) obj; 這代表test方法接受一個任意類型的對象作爲參數,可是該參數對象必須實現接口A,相似於java中的

void test(List<A> obj) 。指針

相關文章
相關標籤/搜索