三大特性之多态

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

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

#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];

原文地址:https://www.cnblogs.com/imChay/p/5590351.html