多态、动态类型、动态绑定

本文深入探讨了多态性在不同类中实现相同方法名称的能力,以及动态绑定如何在运行时确定要调用的具体对象方法。通过Objective-C的id类型示例,展示了动态类型和动态绑定的工作原理。

多态能够使来自不同类的对象定义相同名称的方法。动态类型能使程序执行时才确定对象的属性。动态绑定则能使程序直到执行时才确定实际要调用的对象方法。

使不同的类共享相同方法的名称的能力叫做多态。

 

动态绑定和id类型

 

        //动态绑定实例

        id dataValue;

        Fraction *f1 = [[Fraction alloc] init];

        Complex *c1 = [[Complex alloc] init];

        

        [f1 setTo:2 over:5];

        [c1 setReal:10.0 andImaginary:2.5];

        

        dataValue = f1;

        [dataValue print];

        

        dataValue = c1;

        [dataValue print];

 

动态绑定能使程序直到执行时才确定要调用的对象的方法。

id为动态类型,而动态类型能是程序直到执行时才确定对象的类型。

 

其中 id dataValue; //这里没有声明的时候加上“*” 星号

答案在于:Objective-C系统总是跟踪对象所属的类。先判定对象所属的类,然后在运行时确定需要调用的方法,而不是在编译的时候。

 

不能为id变量使用点运算符,如果你尝试这样使用,编译器就会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值