三大特性_多态

多态:

多态的好处和限制:
调用:
若还有一个喂动物的函数:
void feed(Animal *a){
[a eat];//eat方法在之前的Animal类中已经声明并实现
}

int main(){
——Animal *a=[Cat new];//可以,Cat是Animal
——Cat *c1=[Cat new];//可以
——Cat *c2=[Dog new];//不可以,Dog并不是Cat
——//[c2 eat]编译的时候是警告,运行时动态监测对象的真实类型,返回的是Dog在吃

——NSObject *o1=[Cat new];//可以
——NSObject *o2=[Animal new];//可以
——NSString *s=[Cat new];//不合理,但由于OC是若语法,xcode并不报错,一定要注意

——//如果参数中是父类类型,则可以传入父类或子类类型
——feed(a);
——feed(c1);
——feed(c2);//这就是多态的好处,可以节省代码

——//多态的限制:
——Animal *a2=[Cat new];
——[a2 run];//Cat有一个run跑的方法。程序在编译的时候会warning,因为父类不能调用子类的方法。运行没问题。
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章