#import <Foundation/Foundation.h>
@interface FKBase : NSObject
- (void) base;
- (void) text;
@end
#import "FKBase.h"
@implementation FKBase
- (void) base {
NSLog(@"父类的普通base方法");
}
- (void) text {
NSLog(@"父类将被覆盖的text方法");
}
@end
#import <Foundation/Foundation.h>
#import "FKBase.h"
@interface FKSubclass : FKBase
- (void) sub;
@end
#import "FKSubclass.h"
@implementation FKSubclass
- (void) text {
NSLog(@"子类的覆盖父类的text方法");
}
- (void) sub {
NSLog(@"子类的sub方法");
}
@end
主函数
#import <Foundation/Foundation.h>
#import "FKSubclass.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//编译时类型和运行时类型相同 不存在多态
FKBase *bc = [[FKBase alloc] init];
[bc base];
[bc text];
//编译时类型和运行时类型相同 不存在多态
FKSubclass *sc = [[FKSubclass alloc] init];
[sc base];
[sc text];
[sc sub];
//编译和运行时类型不一样 多态发生
//编译类型为FKBase FKBase 中没有sub方法
FKBase *ploymophicBc = [[FKSubclass alloc] init];
[ploymophicBc base];
[ploymophicBc text];
//可以将任何类型的指针变量赋值给id类型的变量
id dyna = ploymophicBc;
[dyna sub] ;
}
return 0;
}