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中的“分类”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

  不要停留在理论规则上面,快动起来吧!

 

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练