Objective-C 中的多态、动态类型、动态绑定及变量数据类型详解
1. 动态类型调用方法的规则
在使用动态类型调用方法时,有这样一条重要规则:若多个类中实现了同名方法,每个方法的参数类型和返回值类型必须一致,这样编译器才能为消息表达式生成正确的代码。编译器会对它所见到的每个类声明进行一致性检查,若存在一个或多个方法在参数类型或返回值类型上冲突,编译器会发出警告信息。
例如, Fraction 和 Complex 类都包含 add: 方法。 Fraction 类的 add: 方法接收并返回一个 Fraction 对象,而 Complex 类的 add: 方法接收并返回一个 Complex 对象。当 frac1 和 myFract 是 Fraction 对象, comp1 和 myComplex 是 Complex 对象时,以下语句不会有问题:
result = [myFract add: frac1];
result = [myComplex add: comp1];
这是因为在这两种情况下,消息的接收者是静态类型,编译器可以根据接收者类中
超级会员免费看
订阅专栏 解锁全文
2003

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



