zoukankan      html  css  js  c++  java
  • oc基础-多态

      

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

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

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

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

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

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

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

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

    5.内存解析

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

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

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

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

  • 相关阅读:
    寒假特训——搜索——H
    寒假特训——I
    寒假训练——搜索 K
    three.js 加载STL文件
    three.js 加载3DS 404 文件找不到
    C# 请求数据 方式1
    学习 一个简单的业务处理
    ABP 05 创建Model 以及 相应的增删改查
    ABP 04 用户的创建
    ABP 00 常用知识
  • 原文地址:https://www.cnblogs.com/hui1107464497/p/4497360.html
Copyright © 2011-2022 走看看