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

 

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

 

 

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

进入游戏学习与训练