原处:http://blog.csdn.net/l271640625/article/details/8393531html
如下Objective-c简称OCjava
从事java开发的程序员们都知道,在java中interface是接口的意思,java中类是用class声明,接口用interface声明,是两个独立的部分,只有在类声明要实现某个接口时,他们二者才创建了关系,例如:程序员
这时候,AI和AC是独立存在,AC不会由于没有和AI创建关系而编译错误,将AC作如下修改后,AI才和AC创建了关系,AC必须实现AI中声明的方法才能经过编译。
spa
如今,咱们来看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
注意这里的 -(void) test:(id<A>) obj; 这代表test方法接受一个任意类型的对象作为参数,可是该参数对象必须实现接口A,相似于java中的
void test(List<A> obj) 。指针