iPhone开发之object c基础一定义接口


  本文主要讲述iphone开发之object c基础定义接口,更多IOS技术知识,请登陆疯狂软件教育官网。


  首先说说类的定义,在Object-C中必须首先定义一个接口,该接口用于描述这个类的组成,包含成员变量、类变量、类方法、成员方法。接口文件的扩展名为h,也就是定义为C 语言中的头文件。

  下面是一个类的定义,该类完成的功能是使用两个两个int型的数字组成一个分数。

  Fraction.h

  #import

  static int t=0

  @interface Fraction: NSObject{

  int numerator;//分子

  @public int denominator;//分母

  }

  -(void) setNumerator: (int) numerator;//numerator 的setter 方法

  -(void) setDenominator: (int) denominator;//denominator 的setter 方法

  -(void) setNumerator: (int) numerator andDenominator: (int) denominator;

  //一个同时设置两个成员变量的快捷方法

  -(int) numerator;//numerator 的getter 方法

  -(int) denominator;//denominator 的getter 方法

  -(void) print;

  +(void) t;

  @end

  一个object c中的接口就是C语言中的一个HEADER文件,这个文件的结构如下:

  我们来逐行看一下上面的内容:

  (1.) 这里与C 语言不同的是导入头文件使用的是import,而不是include。另外与C 语言一样的地方是如果你想从的地方是如果你想从当前目录查找Header 文件,找不到就到系统的头文件库中查找,请使用#import “Header 文件”,如果你只想从系统的头文件库中查找,请使用#import。Foundation/Foundation.h 包含了Foundation Kit 中的所有的头文件定义,GNUStep 的Object-C 的Foundation 头文件在\GNUStep 安装目录\GNUstep\System\Library\Headers\Foundation 文件夹。GNUStep 的Object-C 的AppKit 头文件在\GNUStep 安装目录\GNUstep\System\Library\Headers\ AppKit 文件夹。

  (2.) static 标识的类变量定义在接口的外面,类变量只能本类访问,除非提供类方法给外部访问这个类变量。

  (3.) Object-C 中的@+指令表示C 语言之外的Object-C 的衍生语法,因此@interface 表示定义了一个接口,接口名称之后紧跟了一个冒号,冒号后是父类的名字,Object-C 中的顶级父类是NSObject。

  (4.) 接口定义之后紧接着一对{ },其中定义了成员变量,所谓的成员变量就相当于JAVA 中的

  实例变量,从属于类的对象。Object-C 中的成员变量使用@public、@protected、@private作为访问修饰符,默认是@protected。这里你要知道的是Object-C 中只有成员变量有访问修饰符,类变量、类方法、成员方法是没有访问修饰符的,所有的方法都是public 的,所有的类变量都是私有的。

  (5.) 以-开头的方法为成员方法,以+开头的方法为类方法,方法中的类型描述(返回值类型、参数类型)都必须使用( )包围。如果方法有多个参数,每个参数都有一个标签名(可以 省略,但不建议这样做),每个标签名之后使用冒号与参数描述分隔。在有多个参数的方法中,实际的方法名称为 方法名:标签名1:标签名2:… …,上面的拥有两个参数的方法的方法名为setNumerator:andDenominator:。与JAVA 不同的是Object-C 中的类方法只能类调用,如果你使用对象调用会报错,而JAVA 仅仅是在编译期给出警告。

  (6.) 以@end 表示接口定义结束。这是因为与JAVA 不同的是JAVA 的类型定义使用{ }包围,而Object-C 中的{ }只包围成员变量,因此必须有个结束标志,一般JAVA 程序员经常会忘记写这个结束标记。

  这里你要知道Object-C 的@interface 与JAVA 的interface 并不是一回事儿,后面你会看到 Object-C 中的@protocol 与JAVA 中的interface 才是等同的。这里你只需要记住的是Object-C

  中的@interface 只是类的一个描述,因为@interface 通常在独立的h 文件中,你可以把它类比成C 语言中的函数原型,也就是在Object-C 里应该叫做类的原型。通过这个原型,编译器可以知道具体实现类有哪些功能。

  上面的接口中的方法很简单,主要就是成员变量的setter、getter 方法,这与JAVA 没有什么

  不同的。但是你会发现getter 方法没有以get 作为方法名称前缀,这是因为get 开头的方法

  在Object-C 中有着特殊的含义,这在后面将会看到。

你可能感兴趣的:(java,private,public,power)