super关键字

super的作用:

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

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

使用场合:

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

方法的重写:

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

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

实例:

非常出名的僵尸案例



main.m

/*

super关键字的作用:

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

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

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


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

*/

/*

僵尸:

跳跃僵尸、盾牌僵尸

*/

#import

#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

@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

@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

@interface NSobject : Person

- (void)run;

@end


Person.m

#import "Person.h"

@implementation Person

- (void)run

{

NSLog(@"跑起来");

[super ]

}

@end

你可能感兴趣的:(super关键字)