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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微雨独行 高级黑马   /  2014-9-27 12:56  /  1008 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 微雨独行 于 2014-9-29 07:25 编辑



分析:
(1)执行第4行代码的时候,实际上包含了3步操作:
  1>在内存中开辟空间:为新创建的Person类对象1,开辟一块存储空间,如图;
  2>初始化成员变量:默认初始化为0
  3>返回空间地址:创建一个指针变量person1,并将对象1的地址赋值给person1,所以person1 = ffc0,如图。
(2)同(1)第10行代码执行完毕后:在内存中开辟了另一块空间,存放新建的Person类对象2,并把对象2的地址赋值给指针变量person2,这时person2 = ffc1,如图。
(3)在使用类创建对象之前,会将类加载进内存(只会加载1次),并且类中声明的方法列表都保存在类中。
(4)每个对象内部,默认有一个isa指针,isa指针指向的就是当前对象所对应的类。
(5)成员变量是每个对象都有的,方法列表只有1份,是所有对象共同使用的。
(6)成员变量赋值:当执行person1 -> _age = 20;的时候,person1会访问它所指向的对象,并将20赋值给_age;
(7)调用方法的本质:当执行[person1 run]的时候,会给person1所指向的对象发送一条run消息,这时对象1会通过isa指针找到类,在类中的方法列表中找到run方法并调用,一调用run方法,就会来到run方法所对应的代码区,执行run方法的代码。



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马