刚接触多态我想大部分人都是在Animal类开始的吧,第一感觉就是多态并没有使程序简化,可有可无,因为main函数里的Animal *cat=[Cat new]; 完全可以用Cat *cat=[Cat new]取代,其实不然!即使这样在-(void)feed:(Animal *)animal方法中照样使用着多态,具体体现在[animal eat];语句中,eat方法已经而且必须在Animal类以及他的子类Cat和Dog类中都有定义,这就是多态的体现,而且如果cat和dog吃的方式、工具、食物都一样的话,完全可以将相同的东西写在feed方法中[animal eat];语句的前面,没必要在Cat和Dog类中的eat方法中都写一边。
//Animal中:
-(void)feed:(Animal *)animal{
[animal eat];
}
//Cat中:
- (void)eat{
NSLog(@"Cat eat!");
}
//Dog中:
- (void)eat{
NSLog(@"Dog eat!");
}