Objective-c中@interface、@implementation、@protocal

转载 2016年05月30日 15:49:42

以下Objective-c简称OC

从事Java开发的程序员们都知道,在java中interface是接口的意思,java中类是用class声明,接口用interface声明,是两个独立的部分,只有在类声明要实现某个接口时,他们两者才建立了关系,例如:

  1. interface AI{  
  2.     void print();  
  3. };  
  4. class AC{  
  5. };  

这时候,AI和AC是独立存在,AC不会因为没有和AI建立关系而编译错误,将AC做以下修改后,AI才和AC建立了关系,AC必须实现AI中声明的方法才能通过编译。

  1. class AC implement AI{  
  2.     void print(){  
  3.         system.out.println('Hello World');  
  4.     }  
  5. };  

现在,我们来看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共同组成一个完整的类。

泛型


OC中的类型id,它可以认为是一种特殊的指针:可以指向任何类型的对象。id 再加上protocal(即oc中的接口),能够达到类似java中泛型的效果

  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) 。

相关文章推荐

Objective-c中@interface、@implementation、@protocal

以下Objective-c简称OC 从事java开发的程序员们都知道,在java中interface是接口的意思,java中类是用class声明,接口用interface声明,是两个独立的部分,...

ObjC(Objective-C)中的"非正式协议(interface)"与"正式协议(protocal)"

ObjC(Objective-C)中的"非正式协议(interface)"与"正式协议(protocal)" 非正式协议在obj-c中的关键字虽然也是interface,但是这个跟c#中的接口(...

ObjC(Objective-C)中的"非正式协议(interface)"与"正式协议(protocal)"

非正式协议在obj-c中的关键字虽然也是interface,但是这个跟c#中的接口(interface)并不完全相同。 回忆一下前面学过的内容,我们定义一个类Sample时,总是会先生成一个Samp...

入门学习Objective-C中的@interface与@implementation

写作目的Objective-C是一门面向对象语言,是对于C语言的扩展。面向对象编程又是学习Objective-C的重中之重,但是刚入门学习时,容易被Objective-C的语法规范搞糊涂。本文尝试用倒...

一起学Objective-C - 创建实现类(implementation)

interface负责声明一个类,implementation负责实现它。 实现类保存在.m文件中。用以区分平常的C文件。 一个实现类的例子 实现类是包含在@implemntation...

objective-C中的接口@interface与泛型(id)

在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法。 不过在obj-c中有二个与之接近的概念"非正式协议(interface)"与"正式协议(protocal)"。非正式协议...

objective-c教程-基础1(interface)

Lesson 3. 类的定义 编程语言 2009年7月31日星期五 1 源文件 Source files 加入新的对象种类的方式:定义新的类 Objectiv...
  • mkhgg
  • mkhgg
  • 2011-05-03 12:23
  • 505

Objective-C学习-如何使用Xcode4.2和Interface Builder创建自己第一个界面产品

1、新建一个项目(这次我命名为CaseTool): 2、在新建的项目里创建类文件,4.2版本会默认同时创建头和源文件,命名为AppControl: 3、编辑头文件 #impo...

一起学Objective-C - 创建Interface

Objective-C的类包含两部分interface和implementation,这里的interface和Java的接口是完全不一样的,这里的iterface其实就是头文件,存在.h文件中。im...

Objective-C分类 @interface NSString (CamelCase)

通过分类的方式可以为已存在的类添加新的方法,甚至不需要源码,有点像C#中的扩展方法。 这时提供一个例子是把一个字符串转换为驼峰式并且出掉单词空格。 NSString+CamelCase.h #impo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)