OC开发之——多态(20)
一 概念
- 某一类食物的多种形态
- OC对象具有多态性
二 多态的用法
2.1 设计三个类,Animal,Dog,Cat
- Animal是父类,里面有个eat方法
- Dog和Cat继承自Animal,是子类
2.2 类的声明与定义
Animal父类
1
2
3
4
5
6
7
8
9
10@interface Animal:NSObject
-(void)eat;
@end
@implementation Animal
-(void)eat
{
NSLog(@"Animal吃东西----");
}
@endDog子类
1
2
3
4
5
6
7
8
9
10
11
12@interface Dog : Animal
-(void)run;
@end
@implementation Dog
-(void)eat
{
NSLog(@"Dog吃东西----");
}
-(void)run
{
NSLog(@"Dog----跑起来");
}Cat子类
1
2
3
4
5
6
7
8
9@interface Cat : Animal
@end
@implementation Cat
-(void)eat
{
NSLog(@"Cat吃东西----");
}
@end
三 多态
3.1 代码体现
1 | Animal *ani=[Dog new]; |
3.2 代码说明
- 子类对象赋值给父类指针
- 父类指针访问对应的属性和方法
3.3 多态的好处
- 用父类接受参数,节省代码
3.4 多态的局限性
- 不能访问子类的属性(可以考虑强制转换)
3.5 多态的细节
- 动态绑定:在运行时根据对象的类型确定动态调用的方法