super关键字

super的作用:

直接调用父类中的某个方法

super处在对象方法中,那么就会调用父类的对象方法,super处在类方法中就会调用父类的类方法

使用场合:

子类重写父类的方法时想保留父类的一些行为

方法的重写:

可以改变子类从父类继承的行为

被重写的方法定义必须与父类中的定义一致

实例:

非常出名的僵尸案例



main.m

/*

super关键字的作用:

1>可以直接调用父类中的某个方法(对象方法、类方法)

2>super处在对象方法中,那么就会调用父类的对象方法

3>super处在类方法中,那么就会调用父类的类方法


使用场合:子类重写父类的方法时想要保留一些父类的行为

*/

/*

僵尸:

跳跃僵尸、盾牌僵尸

*/

#import <Foundation/Foundation.h>

#import "Zombie.h"

#import "JumpZombie.h"

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

{

Zombie *z = [Zombie new];

//  [z walk];

JumpZombie *jz = [JumpZombie new];

[jz walk];

[jz test];  //  对象-test方法

[JumpZombie test]; //  子类+test方法

return 0;

}


Zombie.h

#import <Foundation/Foundation.h>

@interface Zombie : NSObject

- (void)walk;


- (void)test;

+ (void)test;

@end


Zombie.m

#import "Zombie.h"

@implementation Zombie

- (void)walk

{

NSLog(@"挪动了几步,调用了父类的方法");

}


- (void)test

{

NSLog(@"调用了-test方法");

}

+ (void)test

{

NSLog(@"调用了+test方法");

}

@end


JumpZombie.h

#import <Foundation/Foundation.h>

@interface JumpZombie : Zombie

@end


JumpZombie.m

#import "JumpZombie.h"

@implementation Zombie

- (void)walk

{

NSLog(@"跳动两步,调用了子类的方法");

//  NSLog(@"挪动了几步");

[super walk];

}


- (void)test

{

[super test];

}

+ (void)test

{

[super test];

}

@end


Person.h

#import <Foundation/Foundation.h>

@interface NSobject : Person

- (void)run;

@end


Person.m

#import "Person.h"

@implementation Person

- (void)run

{

NSLog(@"跑起来");

[super ]

}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Objective-C 是一门动态语言,这就意味着消息传递和类以及对象的创建都在运行时完成,这个核心的库是由 C\...
    valentizx阅读 614评论 0 1
  • 第3章 super关键字3.1 子父类中构造方法的调用在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造...
    葡小萄家的猫阅读 306评论 0 0
  • 在了解到runtime的知识后,有人会问self和super是怎么来的,有什么作用,当然想都不想就说self是指自...
    幻影快快跑阅读 830评论 6 5
  • 现在有Person类Consumer类(继承Person类)和Test类,需求:实例化Consumer,并给use...
    涎涎阅读 261评论 0 0
  • 什么是super? super代表的是当前子类对象中的父类型特征。 什么时候使用super? 子类和父类中都有某个...
    你的小董阅读 88评论 0 0