您的位置:首页 > 其它

OC学习笔记 面向对象 多态

2015-04-21 09:30 302 查看
#import <Foundation/Foundation.h>
@interface Animal : NSObject
- (void) eat;
@end
@implementation Animal
- (void) eat
{
NSLog(@"用嘴巴吃啊");
}
//如果参数中是父类类型可以传入父类和子类对象。
void feed (Animal *animal)
{
[animal eat];
}
@end

@interface Dog : Animal
- (void) eat;
@end
@implementation Dog
- (void) eat
{
NSLog(@"狗仔用嘴巴吃啊");
[super eat];
}
@end

@interface Cat :  Animal
@end
@implementation Cat
@end

int main()
{   //代码体现多态就是父类类型指针指向子类对象  没有继承就没有多态
//多态 局限性 父类类型变量不能直接调用子类对象 需要强制转换
Animal *animal = [Dog new];
feed(animal);
Cat *c = [Cat new];
feed(c);
Dog *d = (Dog *)animal;//强制转换类型
[d eat];
return 0;
}


多态总结

多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。

在使用多态是,会进行动态检测,以调用真实的对象方法。

多态在代码中的体现即父类指针指向子类对象。

//多态 父类指针指向子类对象 字符串继承NSObject
NSObject *obj1 = [[NSObject alloc]init];
obj1 = @"hello";//字符串赋值给父类对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: