1.多态实质:父类类型的指针指向子类的类型(继承的关系下)

   父类类型 *p=[子类类型 new]    [p 方法]

 链接的时候,会动态的检查p的真实类型,所以执行的方法是子类的实现(即不管父类类型是什么,该代码都会执行成功)

2.局限性:父类类型的变量不能直接调用子类的方法(如上)

      原因:oc的弱语法,会使得上述代码在编译期有一个警告,同时也能正常的运行,但这样写不是很好

3.解决局限性:强制将父类类型的变量转化成子类类型

    子类类型 *p2=(子类类型 *)p

4.多态好处:减少代码量

5.内存解析

     a. 父类类型 *p=[子类类型 new]  //实质,定义一个父类类型的指针指向一个子类的对象,该指针的地址就是子类对象的内存地址

     b. 子类类型 *p2=(子类类型 *)p //定义一个子类的指针变量,该指针变量指向父类的指针变量内存,即该子类指针的内存地址就是子类对象的内存地址

      c. [p2 方法]  //所以,p2实际上就是代表子类的对象,即调用子类对象的方法

注:若b不进行强制转化,编译也会有警告的。

 

posted on 2015-05-12 15:06  Angel_baby  阅读(148)  评论(0编辑  收藏  举报