多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
举例:在开发中你想打印某些对象的内容,来输出对象信息,通过去入参调用description来实现。当实际传入类型是NSObject、UIView、UITableView对象等时,尽管显示类型是NSObject,但还是得到了不同的结果,进而体现了多态。
- (void)printObj:(NSObject *)obj {
[obj description];
}
OC本身是不支持多态特性的。如果要间接实现多态,有两种方案:
①通过Protocol间接实现多态,写一个中间的Manager,进行消息的转发;
②通过NSProxy消息转发,实现多继承
一般来说,多态通过派生一个函数,并且重写其中的方法定义来实现,通过相同的基类类型访问,不同的对象执行不同的代码,如果你编写类库,它比较有用,如果你只是做一个应用,你的代码没有继续被复用的需求,那么就不太用得到。
参考:http://blog.csdn.net/g5dsk/article/details/6095516
集结各类场景实战经验,助你开发运维畅行无忧