Objective-C super 关键字
在接下来的时间里面,我们准备为大家介绍Objective-C中的"super 关键字“。
super 关键字的作用是指向super所在类的父类,同时,在父类中查找super要调用的方法,若要调用的方法不在父类中,则继续往上一级父类中查找,直到找到才会停止,如果,到达根类都没有找到,则报错。
接下来,我们首先看看super关键字的语法格式:
[super 方法名];
语法格式分析:
(1)一对中括号。
(2)在一对中括号里面调用 super 关键字。
(3)方法名,必须是当前对象的类中方法,或者,是继承类中的方法,否则,会报错。
接下来,我们结合例子作进一步的学习。
//===================//
//------定义了high类-----//
//===================//
@interface high : NSObject
{
}
- (void) MoveX;
@end
@implementation high
-(void) MoveX
{
NSLog(@"hig MoveX"); //向终端输出hig MoveX,表示对象调用了该方法
}
@end
//===================//
//-------定义了Mid类-----//
//===================//
@interface Mid : high
{
}
- (void) MoveX;
- (void) Move;
@end
@implementation Mid
-(void) MoveX
{
NSLog(@"mid MoveX"); //向终端输出mid MoveX,表示对象调用了该方法
}
-(void) Move
{
[ super MoveX ]; //通过super 调用了MoveX方法,而MoveX方法所在当前类的父类是high,
所以,就调用了high中的MoveX。
}
@end
//===================//
//-------定义了Low类-----//
//===================//
@interface Low : Mid
{
int low;
}
- (void) MoveX;
@end
@implementation Low
-(void) MoveX
{
NSLog(@"low MoveX");
}
@end
//-------入口函数main-----//
int main (int argc, const char * argv[]) {
Low *L1 = [ [ Low alloc ] init ]; //通过类Low定义了对象L1,并分配了内存空间与初始化。
[ L1 Move ]; //通过对象L1调用了父类Mid中的Move方法。
}
例子分析:
(1)首先,定义了3个类,分别是high,Mid,Low。
(2)3个类中都有一个MoveX方法,该方法会向终端输出一个信息,说明调用了哪个类中的方法。
(3)在Mid类中,另外定义了一个Move方法,该方法中通过super 调用了MoveX方法,
然后,我们看看在入口函数main中,首先通过Low类定义了对象L1,
然后,通过对象L1 调用了Move方法,而这个Move方法是定义在Low类的父类Mid中,
所以,对象L1就可以调用Move方法,
然后,在Move方法中就通过super 调用了MoveX方法,而super 是指向当前类的父类,
而super所在的当前类是Mid,同时,Mid的父类就是high类,
所以,就调用了high类中的MoveX方法,然后,向终端输出 high MoveX,
所以,通过这个例子,我们就可以了解到,super 就是指向当前类的父类,例子中Mid类的父类是high,同时,在high类中有MoveX方法,所以,就调用了high类中MoveX方法。
非常好,现在,我们已经掌握了Objective-C中的“super 关键字”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)