三大特性之多态

//多态:多种形态 对象有多种形态

//没有继承就没有多态,必须继承

 

#import <Foundation/Foundation.h>

 

//多态:父类的指针指向子类对象

//调用一个对象方法会检测对象的真实形象

 

//注意:

//Cat *c=[Animal new]; 这样都允许,OC是弱语法

 

//OC允许多继承吗

 

//多态的好处:

//如果函数/方法参数中使用的是父类类型,可以传入父类,子类对象

void feed(Dog *dog){

    [dog eat];

}

void feed(Cat *cat){

    [cat eat];

}

//多态使用后

void feed(Animal *a){

    [a eat];

}

 

//多态的局限性

//父类类型的指针变量是不能来调用子类特有的方法,

//如果必须强转为子类类型后,才能调用子类特有的方法

 

//Animal *aa=[Dog new];

//[aa run]; //警告,虽然Animal没有run方法,Dog有

//,能运行,不要这样写,可以采用强制转换

// Dog *d=(Dog*)a;  类型转换是转 给编译器看的

 

//Dog *d=[Cat new]; 弱语法

//[d eat];//猫吃东西

//NSString *d=[Cat new];

posted @ 2016-06-16 11:13  Shaper22  阅读(139)  评论(0编辑  收藏  举报