objective-c中的Super

来源:互联网 发布:知乎 成人内容 老司机 编辑:程序博客网 时间:2024/06/07 22:36


一、objective-c中的Super的用法
super的作用
1.  直接调用父类中的某个方法
2.  super处在对象方法中,那么就会调用父类的对象方法
     super处在类方法中,那么就会调用父类的类方法
3.  使用场合:子类重写父类的方法时想保留父类的一些行为



二、实例情境我们看如下实例:
我们准备定义一个僵尸类,然后下面的各种跳跃僵尸、舞王僵尸、铁桶僵尸会继承上面的这个僵尸类作为父类。

#import <Foundation/Foundation.h>@interface Zoombie : NSObject                                                                               //   僵尸类- (void)walk;+ (void)test;         //  声明类方法test- (void)test; //  声明对象方法walk和 test@end@implementation Zoombie- (void)walk{NSLog(@"往前挪两步******");                                                                                  //  对象方法walk的实现}+ (void)test{NSLog(@"Zoombie+test"); //类方法test的实现}- (void)test{NSLog(@"Zoombie-test");         //对象方法test的实现}@end@interface JumpZoombie : Zoombie//  跳跃僵尸  继承了 僵尸类+ (void)haha;       //声明了类方法haha- (void)haha2;//声明了对象方法haha2@end@implementation JumpZoombie+ (void)haha   //  实现类方法haha{[super test];       //调用super关键字,因为其处于类方法中,所以调用父类的类方法}- (void)haha2{[super test];    //  调用super关键字,因为其处于对象方法中,所以调用父类的对象方法}- (void)walk //  重写父类方法walk。{NSLog(@"跳两下");        // 因为跳跃僵尸,一般是跳两下之后,再往前走,所以需要重写该方法[super walk];       //  此处如果写[self walk] 系统会寻找当前对象的walk方法,会死循环。//NSLog(@"往前挪两步----");                                                                // 走两下(直接调用父类的walk方法更方便)。}@endint main(){//[JumpZoombie haha];JumpZoombie *jz = [JumpZoombie new];[jz haha2];return 0;}


0 0