关于指针变量编译和运行时

指针变量编译时只能运行编译时的方法,不能调用运行时类型的方法,即使它实际所指对象确实包含该方法。

Father* fa=[[Son alloc]init];

编译时是:Father  

运行时时:Son

解决方法: 强制转换成子类类型,这样 编译和运行时的类型就相同了

//下面编译时类型和运行时类型不一样,多态发生

FKBase* ploymophicBc=[[FKSubclass alloc]init];

[ploymophicBc base];

[ploymophicBc test];

//FKbase类没有提供sub方法,所以编译出错

//[ploymophicBc sub];

//强制转换,将编译时类型变得跟运行时一样

[(FKSubclass*)ploymophicBc sub];

NSLog(@"%@",ploymophicBc);

转载于:https://www.cnblogs.com/yanggenwei/p/5002928.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值