OC中的多态是基于继承的概念上,是通过传入父类类型的指针指向子类,实现调用子类的方法,子类的特有方法不可调用,也就是说通过这种方式调用的方法必须为在父类声明过的方法。
例如animal为一父类,拥有eat方法。cat为继承animal的子类,拥有eat方法和run方法。
eg1.
animal *c = [cat new];
[c eat]
则会运行在cat中定义的eat方法,而不是animal中的eat方法。
eg2.
void eat(animal *a){
[a eat];
}
eat(c)
同样会运行cat中定义的eat方法。
eg3.
animal *c = [cat new];
[c run];
编译不通过。
原文:http://www.cnblogs.com/Thkeer/p/5092925.html