多态 oc

    1. 对象具备多种形态就是多态;
    2. 没有继承就没有多态;
    3. 父类指针指向子类对象;Animal *a = [Dog new]; [a eat];
    4. 调用方法是会检测对象的真是形象;
    5. NSObject *n = [Dog new];
    6. NSObject *n = [Animal  new];
    7. OC是弱语法;runtime动态属性;只会出现警告,不会报错;
    8.  
    9. 多态的好处:
    10. 喂狗;喂猫;可以用喂动物来代替;因为猫和狗有共同父类;
    11. 如果参数中使用的是父类类型,可以传入父类,子类对象;
    12.  
    13. 多态的限制:
    14. 父类类型的变量不能用来调用子类的方法;Animal *aa = [Dog new];
    15. aa指向的是Animal类型;我们使用强制类型转换为Dog类型:
    16. Dog *dd = (Dog *)aa;
    17. 多态
    18. 没有继承就没有多态
    19. 代码的体现:父类类型的指针指向之类对象;
    20. 好处:如果函数、方法参数中使用的是父类类型,可以传入父类、子类对象;
    21. 局限性:父类类型的变量不能直接调用子类特有的方法;必须强转为子类类型变量后,才能直接调用子类类型方法;
原文地址:https://www.cnblogs.com/williamliuwen/p/5369819.html