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中的“继承”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)