(1.) 这里与C 语言不同的是导入头文件使用的是import,而不是include。另外与C 语言一样的地方是如果你想从的地方是如果你想从当前目录查找Header 文件,找不到就到系统的头文件库中查找,请使用#import “Header 文件”,如果你只想从系统的头文件库中查找,请使用#import<Header 文件>。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 中有着特殊的含义,这在后面将会看到。