#import <Foundation/Foundation.h>
/*
多态的概念:
不同的对象用自己的方式响应相同名称方法的能力就称之为多态。
体现出来:
1> 父类的指针指向子类对象
多态条件:
1> 有继承关系,
2> 有方法重写(子类把父类的同名方法给重写了)
*/
@interface Animal : NSObject
-(void)run;
@end
@implementation Animal
-(void)run{
NSLog(@"动物在跑");
}
@end
@interface Dog : Animal
-(void)run; //这句话可以不写
-(void)eat;
@end
@implementation Dog
-(void)run{
NSLog(@"狗以80码的速度冲出去,没撞树上");
}
-(void)eat{
NSLog(@"狗在吃东西");
}
@end
@interface Cat : Animal
@end
@implementation Cat
-(void)run{
NSLog(@"猫在爬树");
}
@end
int main(int argc, constchar * argv[]) {
@autoreleasepool {
//没有使用多态
Animal *animal = [Animalnew];
[animal run]; //打印结果:动物在跑
//********* 使用多态 ********
//父类指针指向 子类对象
Animal *a2 = [Dog new];
[a2 run]; //打印结果:狗以80码的速度冲出去,没撞树上
Animal *a3 = [Cat new];
[a3 run]; //打印结果:猫在爬树
}
return0;
}
|
|