A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 诸葛佰通 于 2014-6-28 15:49 编辑

请教一下:
     1. 子类在调用父类方法时能不能用到父类的分类的方法?


     2. 在程序启动加载Load方法的过程中,为什么子类会优于父类的分类先进行load ?
         按优先级顺序不是这样的么:
           NSObjcet
              ↓
           A类           →          A类的分类(优先级高于A类)
              ↓
           B类 (A类的子类)
        在LOAD过程中不是按级别一级一级加载下来的么?


     3. 在第一次调用类方法时,如调用B类,则系统会自动调用 B类的initialize方法,同时也会调用其父类的initialize方法。
         如果这里B类的父类A类跟A类的分类同时都重写了initialize方法,那么在调用B类时,是会调用A类的initialize方法呢还是A类的分类的initialize方法?为什么?(敲过代码是调用A类的,可是想不明白为什么,分类的优先级不是高于其本类么?)

    求高手解惑下。。。

1 个回复

倒序浏览
1:子类继承了父类,就继承了父类的成员变量和父类的所有方法,而分类只是在不影响原类的基础上扩充方法,所以子类可以用到父类的分类方法

2:程序运行时会加载项目中所有的类,加载完毕会调用类的load方法,调用顺序是父类->子类->分类

3:关于你说敲过代码是调用原类的方法,我表示不能理解,因为当调用子类的时候,首先会初始化父类,所以先调用父类的initialize方法,然后在调用子类的initialize方法,由于分类重写了initialize方法,且分类的优先级高于原类,所以会调用分类的initialize方法

有什么问题,随时讨论交流
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马