OC语言—多态局限性

OC语言—多态局限性

/*

多态局限性
1、代码的体现:父类的指针指向子类对象
2、优点:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
3、局限性;1->父类类型的变量 不能 直接调用子类特有的方法 必须强转为子类类型变量后,才能调用子类特有的方法
*/


#include <Foundation/Foundation.h>


@interface Animal : NSObeject
- (void)est;
@end
@implementation Animal
- (void)est
{
NSLog(@"吃东西");
}
@end


@interface Dog: Animal
- (void)run;
@end


@implementation Dog


- (void)run
{
NSLog(@"Dog-跑");
}
- (void)est
{
NSLog(@"Dog-吃东西");
}
@end


//如果参数中使用的是父类类型,可以传入父类、子类对象
void feed(Animal *a)
{
[a eat];
}
int main()
{

Animal *aa=[Dog mew];
//多态的局限性:父类类型的变量不能用来调用子类的方法
//[aa run];


Dog *dd=(Dog *)aa;
[dd run];




Dog *d=[Dog new];
[d run];


// //OC是弱语法,会弹出警告
// //Dog *d=[Animal new];
// //多种形态
// Dog *d=[Dog new];
// //多态:父类指针指向子类对象
// Animal *a=[Dog mew];
//
// //调用方法时会检测对象的真实形象
// [a eat];
//
// Dog *dd=[Dog new];
feed(dd);
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值