———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流!————
本节是个人学习过程中的笔记,供初学者一起学习,欢迎大家批评指正,留言参与讨论,谢谢。
本节内容,继承与super关键字运用,代码如下:
//利用植物大战僵尸里面的僵尸类来学习继承和super关键字用法
#import <Foundation/Foundation.h>
@interface Zombie : NSObject
{
int _speed;
}
- (void)walk;
+ (void)walk;
@end
@implementation Zombie
+ (void)walk
{
NSLog(@"父类Zombie +walk");
}
- (void)walk
{
NSLog(@"父类Zombie -walk");
}
@end
@interface JumpZombie : Zombie
{
//int _speed; //error: duplicate member '_speed'
}
- (void)setSpeed: (int)speed;
- (int)speed;
- (void)walk;
+ (void)walk;
@end
@implementation JumpZombie
- (void)setSpeed: (int)speed
{
_speed = speed;
}
- (int)speed{ return _speed;}
- (void)walk
{
[super walk];//如果父类没有对象方法walk,只有类方法walk,这里会报错,因为此处只能去找对象方法
NSLog(@"子类JumpZombie -walk");
}
+ (void)walk
{
[super walk];//这里也只能去找类方法,如果找对象方法,好吧,已经犯规咯
NSLog(@"子类Zombie +walk");
}
@end
void test()
{
//测试,继承中方法的继承机制,和super的使用规范
JumpZombie* jz = [JumpZombie new];
[jz walk];
[JumpZombie walk];
//测试 对成员变量的继承情况
[jz setSpeed: 100];
NSLog(@"子类定义的_speed读写方法,输出_speed值:%d",[jz speed]);
}
int main()
{
test();
return 0;
}
程序运行结果如下: