--------------- FKBird.h ---------------
#import
<Foundation/Foundation.h>
@interface
FKBird: NSObject
- ( void ) fly;
- ( void ) fly;
@end
--------------- FKBird.m ---------------
#import
"FKBird.h"
@implementation
FKBird
- ( void ) fly
- ( void ) fly
{
NSLog(@"我在天空里自由自在地飞翔");
}
@end
--------------- FKOstrich.h ---------------
#import
<Foundation/Foundation.h>
#import
"FKBird.h"
@interface
FKOstrich: FKBird
- ( void ) callOverridedMethod;
- ( void ) callOverridedMethod;
@end
--------------- FKOstrich.m ---------------
#import
"FKOstrich.h"
@implementation FKOstrich
- ( void ) fly
@implementation FKOstrich
- ( void ) fly
{
NSLog(@"我只能在地上奔跑");
}
- ( void ) callOverridedMethod
{
- ( void ) callOverridedMethod
{
[super fly];
}
@end
---------------
main.m
---------------
#import
"FKOstrich.h"
int main()
{
FKOstrich* os = [[FKOstrich alloc] init];
[os fly];
[os callOverridedMethod];
int main()
{
FKOstrich* os = [[FKOstrich alloc] init];
[os fly];
[os callOverridedMethod];
}
一、编写本节代码的具体步骤:
1.可仿照第二章001节的代码编写步骤,不同的是,本节代码要创建两个类。
二、本节代码涉及到的知识点:
1.如果子类定义了一个方法,这个方法的方法名和形参标签与父类中的某个方法
完全
相同,
这就叫作“方法重写”,又称“方法覆盖”。
2.父类的方法被子类的方法覆盖之后,我们也还是可以通过[super 方法名]来调用父类方法。
3.super既可以出现在类方法中,也可以出现在实例方法中。
在类方法中使用super调用父类方法时,被调用的父类方法只能是类方法。
在实例方法中使用super调用父类方法时,被调用的父类方法只能是示例方法。
4.知识点回顾:当self出现在实例方法中的时候,self代表调用该方法的对象。
当self出现在类方法中的时候,self代表调用该方法的类。