Objective-C 分类
在接下来的时间里面,我们准备为大家介绍Objective-C中的"分类"。
分类:在不需要创建子类,也不需要访问类中的源代码的情况下,可以对类的功能进行扩展,
也就是添加其它新的方法。
接下来,我们先看看分类的语法格式:
分类定义的语法格式:
@interface 类名 ( 分类名)
方法定义;
@end
语法格式分析:
(1)与类定义一样,以@interface开头。
(2)原有的类名,已经定义的类名。
(3)一对小括号,小括号中是分类名,按变量的命名规则定义即可。
(4)定义分类中的方法,按照前面学习的方法定义格式来定义就可以了。
(5)@end说明分类的定义结束。
分类中方法定义的语法格式:
@implementation 类名 ( 分类名)
方法的实现;
@end
语法格式分析:
(1)与类中原有方法的定义一样,以@implementation开头。
(2)原有的类名,已经定义的类名。
(3)一对小括号,小括号中是分类名。
(4)实现分类中的方法,按照前面学习的“方法实现”的格式来实现就可以了。
(5)@end说明结束。
接下来,我们结合例子作进一步的学习。
//===================//
//------定义了Role类-----//
//===================//
@interface Role : NSObject
{
int x;
int y;
}
- (void) Move; //移动方法
@end
@implementation Role
-(void) Move
{
x = x + 1;
}
@end
//=====================//
//------定义了Role的分类-----//
//=====================//
@interface Role ( roleMath ) //Role的分类roleMath
-(int) Bomb:(int) pow ; //定义炸弹方法Bomb,需要接收一个参数pow
@end
@implementation Role ( roleMath ) //实现分类roleMath
-(int) Bomb :(int) pow
{
pow = pow + 100; //将参数pow加100,并将结果保存回变量pow。
return pow; //通过return 返回pow中的值。
}
@end
//-------入口函数main-----//
int main (int argc, const char * argv[]) {
Role *r1 = [ [ Role alloc ] init ]; //通过类Role定义了对象r1,并分配了内存空间与初始化。
[ r1 Bomb:100 ]; //正确,调用了分类roleMath中的方法Bomb,并传递100给参数pow。
}
非常好,现在,我们已经掌握了Objective-C中的“分类”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)