java
Objective-c
在java中的interface是‘接口’的意思,而java的類聲明用class,即接口用interface聲明,類是用class聲明,是兩個獨立的部分。
只有在類聲明要實現某個接口時,他們兩者才建立了關系,例如:
- interface AI{
- void print();
- };
- class AC{
- };
這時候,AI和AC是獨立存在,AC不會因為沒有和AI建立關系而編譯錯誤,將AC做以下修改后,AI才和AC建立了關系,AC必須實現AI中聲明的方法才能通過編譯。
- class AC implement AI{
- void print(){
- system.out.println('Hello World');
- }
- };
Objective-c
網上大家都將oc中的interface理解為“非正式協議(或說接口)”,prototal理解為“正式協議(或說接口)”,我覺得那樣理解起來雖然不困難,但是很變扭,於是我做一點自己的理解:
1、protocal就相當於java中的interface;
2、而interface和implementation共同代表一個類,兩者的組合相當於java中的class,即oc中的類必須包括兩部分,interface部分和implementation部分,這才是oc中的一個類的完整聲明;然后OC中將成員變量和成員方法的聲明部分放置在interface部分中,包括繼承關系,protocal實現關系,都在interface里面的頭部進行聲明,然后將實現部分放置在implementation部分中,相當於是將類拆分成聲明和實現兩部分,這兩部分缺一不可,所以在OC中,不妨不要將interface叫做接口,直接叫做類聲明部分來得容易理解多了,簡而言之,oc中interface是類的一個部分,和implementation共同組成一個完整的類。
1、protocal就相當於java中的interface;
2、而interface和implementation共同代表一個類,兩者的組合相當於java中的class,即oc中的類必須包括兩部分,interface部分和implementation部分,這才是oc中的一個類的完整聲明;然后OC中將成員變量和成員方法的聲明部分放置在interface部分中,包括繼承關系,protocal實現關系,都在interface里面的頭部進行聲明,然后將實現部分放置在implementation部分中,相當於是將類拆分成聲明和實現兩部分,這兩部分缺一不可,所以在OC中,不妨不要將interface叫做接口,直接叫做類聲明部分來得容易理解多了,簡而言之,oc中interface是類的一個部分,和implementation共同組成一個完整的類。
另外補充
oc中我們可以在@interface中定義也可以在property中定義變量,兩者有什么區別呢?
- 只在@nterface中定義變量的話,你所定義的變量只能在當前的類中訪問,在其他類中是訪問不了的;而用@property聲明的變量可以在外部訪問。
- 用了@property去聲明的變量,可以使用“self.變量名”的方式去讀寫變量。而用@interface的方式就不可以。
- 這里給出一個鏈接:http://stackoverflow.com/questions/9702258/difference-between-properties-and-variables-in-ios-header-file 想更清楚的就去這里看看
