多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
举例:在开发中你想打印某些对象的内容,来输出对象信息,通过去入参调用description来实现。当实际传入类型是NSObject、UIView、UITableView对象等时,尽管显示类型是NSObject,但还是得到了不同的结果,进而体现了多态。
- (void)printObj:(NSObject *)obj {
[obj description];
}
OC本身是不支持多态特性的。如果要间接实现多态,有两种方案:
①通过Protocol间接实现多态,写一个中间的Manager,进行消息的转发;
②通过NSProxy消息转发,实现多继承
一般来说,多态通过派生一个函数,并且重写其中的方法定义来实现,通过相同的基类类型访问,不同的对象执行不同的代码,如果你编写类库,它比较有用,如果你只是做一个应用,你的代码没有继续被复用的需求,那么就不太用得到。
参考:http://blog.csdn.net/g5dsk/article/details/6095516
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。