多态能够使来自不同类的对象定义相同名称的方法。动态类型能使程序执行时才确定对象的属性。动态绑定则能使程序直到执行时才确定实际要调用的对象方法。
使不同的类共享相同方法的名称的能力叫做多态。
动态绑定和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变量使用点运算符,如果你尝试这样使用,编译器就会报错。
本文深入探讨了多态性在不同类中实现相同方法名称的能力,以及动态绑定如何在运行时确定要调用的具体对象方法。通过Objective-C的id类型示例,展示了动态类型和动态绑定的工作原理。
3874

被折叠的 条评论
为什么被折叠?



