Objective-C 继承

 

 

  在接下来的时间里面,我们准备为大家介绍Objective-C中的继承,而什么是继承呢?那么,我们可以通过下面的例子来说明一下。

 

  首先,我们可以定义一个“动物类 ”,而在这个类中,可以定义“头部”、“身体”,“腿”和“尾巴”这四个属性,这样,就可以去描述陆地上动物了。

 

  接下来,假设我们要定义动物中的“犀牛”,那么,假设我们使用刚才定义好的”动物类“去描述犀牛,这样,我们可以描述它的头部,身体和腿以及尾巴,因为,所有的犀牛都具有这4个属性,但是,犀牛还有另外一个属性,就是它的头部上面有“角”,而这个属性很多动物都没有的,例如,狮子,老虎,猴子,大象,马等的动物都没有角。

 

  所以,在这样的情况下,我们就可以使用继承,首先,我们可以定义一个“犀牛类”,而在该类中,我们只需要定义一个属性,就是”角“而其余的属性,头、身体、腿和尾巴,就可以通过继承”动物类“来获取到,而不需要重复在“犀牛类”中定义了。

 

 

 

  通过上面所举的例子,相信大家就可以了解到什么是Objective-C中的“继承”,而在接下来的时间里面,我们就需要学习一下,“继承”的语法,语法如下:

 

@interface  子类名 :父类名

{

  属性;

}

  方法;

@end

 

语法格式分析:

(1)定义子类名(其实就是一个类名),而冒号就说明当前子类要进行继承,用于分隔子类与父类。

 

(2)父类名,可以是你自己定义的类,或者是系统提供的类,例如前面学习时所使用过的NSObject类。

 

(3)而剩下的内容都与类的定义是一样的,在这里就不再重复介绍了。

 

 

 

 接下来,我们结合前面学习中所使用过的代码来作进一步的学习。

 

@interface   Role : NSObject   //定义了类Role,并继承了父类NSObject
{
  @public

    int x;

    int y;

    int pow;
};

  - (void) MoveX : (int) mx : (int) my;  //定义方法MoveX

  + (void) Attack ;             //定义方法Attack

@end

 

 

//入口函数main

int main ( int argc, const char * argv[] )

{  

  Role *r1 = [ [ Role alloc ] init ];    //定义对象 r1 并分配了内存空间。

 

  return 0;

 

代码回顾与分析:

 

(1)本次回顾与分析的重点在继承上面,在这里,我们可以看到继承了类NSObject,而该类是

   Objective-C中的根类,也就是说,在它的上面没有其它的父类了。

   而继承它的原因就是,在对象分配内存空间时,我们要使用它里面的方法alloc,所以,就要

   继承它,然后,就可以使用它里面的方法alloc。

 

 

 

  接下来,我们就通过一个自己定义的类,“犀牛类”,去继承一个“动物类”。

 

例子:

//-----------------//

//----动物类----//

//----------------//

@interface  DongWu :NSObject  //继承了根类NSObject

{

  @ public

    int head; //头

    int body;  //身

    int Leg;  //腿

    int Tail;  //尾

}

@end

 

//-----------------//

//-----犀牛类---//

//-----------------//

@interface  XiNiu : DongWu   //继承了父类DongWu 

{

  @public

    int  Jiao; //角

}

@end

 

 

//入口函数main

int main ( int argc, const char * argv[] )

{  

  XiNiu  *XN1 = [ [ XiNiu  alloc ] init ];    //定义犀牛对象 XN1 并分配了内存空间。

 

  XN1->head = 1; //调用父类DongWu中的属性head并赋值为1。

  XN1->Jiao = 2;  //调用犀牛类中自身的属性Jiao,并赋值为2。

 

  return 0;

 

 

例子分析:

(1)首先定义了动物类DongWu,包含头、身、腿和尾,这4个属性,并继承了根类NSObject

 

(2)定义了犀牛类XiNiu,并继承了“动物类”DongWu

 

(3)在犀牛类XiNiu中定义了新的属性 Jiao,描述角属性。

 

(4)在入口函数main中通过犀牛类XiNiu定义了一个犀牛对象XN1,并通过alloc分配了内存空间。

 

(5)通过犀牛对象XN1可以调用已经继承的“动物类”中公有的属性与方法,例子中调用了head并赋值为1,然后,也可以调用自身类中定义的属性与方法,例子中还调用了Jiao属性并赋值为2,这样,就可以描述犀牛对象有1个头,两只角。

 

 

 

  非常好,现在,我们已经掌握了Objective-C中的“继承”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

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

 

 

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

进入游戏学习与训练