Objective-C类的定义详解与实例

来源:互联网 发布:数据分析兼职平台 编辑:程序博客网 时间:2024/05/17 09:24

类的定义

在Objective-C语言中,接口(interface)和实现(implementation)是分离开的,但是以上两个部分都是每个Objective-C程序中的一部分,其中@interface部分用于描述类、类的数据成分以及类的方法;@implementation部分则是实现这些方法的实际代码。

类的接口声明

类的接口部分定义了类的实例变量和方法,类的接口声明通常声明为头文件,提供给要调用这个类的模块引用,在Objective-C语言中,类的接口声明以编译指令@interface开头并以@end结束,接口的定义如下所示:

@interface 类名 : 父类名    {        实例变量的定义;        .........   } 类的方法声明; .......@end

(注意:@end后面不需要加“;”)
Objective-C类的命名规则和C语言变量的命名规则一样,但Objective-C的类名习惯首写字母大写,而方法名(选择器名)和实例变量名通常都以小写字母开头,类名不能和变量名以及方法名相同。

有关父类名的解释

假如以某个类为父类生成若干个子类,然后再继承这些子类并生成更多的子类,如此循环下去就可能生成一颗类似于倒立的树,它由通过继承而彼此关联的类组成,这样的树称为类层次机构(class hierarchy),位于类层次结构最顶端的类称为根类(root class),也可以称之为父类
NSObject是Cocoa环境下的根类,Cocoa中所有的类都直接或间接的继承了NSObject。新建的任何类都必须是NSObject或它的继承子类,NSObject中定义了所有Objective-C对象的基本方法。

有关类方法的声明

在Objective-C语言中,类方法的声明通常采用格式为:
-(返回值类型)类的方法名;
其中开头的负号(-)通知Objective-C编译器,该方法是一个实例方法,类方法是对类本身执行某些操作的方法,例如创建类的新实例,这类似于制造一台电风扇,在这点一上,电风扇就是一个类,而制造新电风扇便是类方法。

类的实现

类的实现就是实现类定义中方法的实际代码,在Objective-C语言中,类的实现以编译指令@implementation开头并以@end结束,类的实现定义如下所示:

    @implementation 类名    方法的定义;    ............    @end

类的实现部分不需要再次声明父类(@Interface接口部分声明的时候必须写上父类)。实现部分包含了接口部分中声明的所有方法的实现。如果接口部分中没有定义任何方法,实现部分也可以为空,即不包含任何方法的实现。
方法内部定义局部变量和C语言中定义局部变量的方法相同,但是如果定义的局部变量和实例变量重名,实例变量就会被覆盖,这是将无法访问实例变量。方法的参数也是一样,如果参数名和实例变量名重名,也会发生覆盖,所以要尽量使用不同的名字。

应用实例(遥控器)

通过遥控器可以控制电视等电器的音量,这里就举一个音量类的例子来看看如何定义一个类,音量类共包括4个变量,分别是音量的最小值(min)、音量的最大值(max)、音量变化的幅度值(step)和当前音量(value)。音量类共包括4个方法,分别是用于初始化音量的最小值、最大值和变化幅度值的初始化方法(initWithmin),以及返回当前音量值大小的方法(value)、增大音量的方法(up)和减小音量的方法(down)。

音量(Volume)类的接口部分

@interface Volume : NSObject{int val;int min,max,step;}-(id)initWithMin:(int)a max:(int)b step:(int)s;-(int)value;-(id)up;-(id)down;@end    

音量(Volume)类的实现部分

@implementation Volume-(id)initWithMin:(int)a max:(int)b step:(int)s{self = [super init];if (self != nil){val = min = a;max = b;step = s;}return self;}-(int)value{return value;}-(id)up{if ((val += step) > max)val = max;return self;}-(id)down{if ((val -= step) < min)val = min;return self;}@end

用于测试音量(Volume)类的main函数

int main(void){id v, w;v=[[Volume alloc] initWithMin:0 max:10 step:2];w=[[Volume alloc] initWithMin:0 max:9 step:3];[v up];printf("%d %d\n",[v value],[w value]);[v up];[w up];printf("%d %d\n",[v value],[w value]);[v down];[w down];printf("%d %d\n",[v value],[w value]);return 0;}
0 0
原创粉丝点击