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;}
- Objective-C类的定义详解与实例
- Objective-C 类声明,定义,实例,初始化
- Objective-C 类声明,定义,实例,初始化
- Objective-C 类声明,定义,实例,初始化
- Objective-C 类声明,定义,实例,初始化
- Objective-C 类声明,定义,实例,初始化
- Objective-C 类的定义
- Objective-c中类的定义
- Objective-C类的定义和实现
- objective-c 多参数方法的定义与调用
- objective-c 多参数方法的定义与调用
- Objective-C枚举的几种定义方式与使用
- Objective-C 定义的类型
- 详解Objective-C可变参数函数定义
- Objective-C - 类的设计实例
- objective-c - 类实例变量的声明
- objective c 学习:定义类
- 详解Objective-C的meta-class ,runtime创建类,添加实例变量
- 已知一个数组 20 个元素(随机 1 到 100 之间包含 1 和 100),求大于平均数的元素个数,并动态生成一个新数组保存
- LeetCode:Excel Sheet Column Number
- win32 启动和结束进程
- Leetcode--easy系列6
- XAMPP本地访问慢
- Objective-C类的定义详解与实例
- iOS-KVO究竟怎么用
- Android---59---Toast的使用
- HLJU周赛5解题报告
- 版本控制工具总结
- iOS学习笔记(3)UIButton
- Sicily 1934. 移动小球
- 排序算法——冒泡排序
- 图连通