/*
多态:多种形态(建立在继承的基础之上)
多态的体现:父类指针指向子类,每个OC对象都有多态性
多态的局限性:父类指针不能直接调用子类特有的方法,如果要正常调用子类特有的方法
需要将父类指针强制转换为子类指针
*/
#import<Foundation/Foundation.h>
@interface Zoombie:NSObject
-(void)walk;
@end
@implementation Zoombie
-(void)walk
{
NSLog(@"僵尸走几步,,,,");
}
@end
@interface JumpZoombie:Zoombie
-(void)walk;
@end
@implementation JumpZoombie
-(void)walk
{
NSLog(@"僵尸跳几步,,,");
}
@end
int main()
{
//第一种状态
JumpZoombie *jump = [JumpZoombie new];
[jump walk];
//第二种状态:父类指针指向子类对象
//Zoombie 类型的指针指向了新建的对象
Zoombie *j = [JumpZoombie new];
/*
这个方法在执行的过程中,执行一个“动态绑定”;
动态绑定就是检测指针所指对象的对象是什么类型,该对象实质是JumpZoombie创建的对象,所以指针指向JumpZoombie对象,所以 调用该对象中的方法;
*/
[j walk];
return 0;
}
运行结果
: