黑马程序员技术交流社区
标题:
在创建一个对象时的一些问题
[打印本页]
作者:
homeless
时间:
2014-3-1 09:49
标题:
在创建一个对象时的一些问题
内存分成三块,栈,堆,代码区。在执行Person p=new Person()时,person类的静态变量,静态方法,普通方法会被放入 代码区,引用变量p会在栈里面,堆里面会生成描述类数据的对象,这些数据执行默认初始化。接着是构造代码块的执行,然后在构造函数调用时会追溯person类的父类直到OBJECT类,最后再自上而下的显式初始化堆里面的数据。最后在内存里的形态就是:栈里面有个p指向Person对象,堆里面依次存在着person对象和它所有的父类对象(或者说是对父类数据的描述,我不知道在这里称父类对象对不对,就是在调用父类构造函数时产生的东西,也可能没有东西产生,在调用到父类构造函数时,会不会在堆里开空间,还是和person类对象共用同一个空间,我疑惑的地方就是这里,不知道该怎么理解才对),还有就是代码区里,那些person类的方法 和它父类的方法都是怎么分布的
作者:
漠然~回首℃
时间:
2014-3-2 01:06
子类继承父类,new Person() 时在堆中生成一个new Person 的区域 ,但是在这个new Personde 区域里面还有一个super的指针,指向new Person 中的一块 专门存储父类 成员变量的区域,我们老师就是这样讲的!
作者:
l939
时间:
2014-3-2 10:13
我也刚看到这里,楼主的问题瞬间解决我的疑惑啊。。。。
作者:
李白衣
时间:
2014-3-2 10:41
在执行Person p=new Person()时,除了在堆上会有个person对象,person对象还拥有一个Object对象。调用父类构造函数的时候,是要创建对象的,可以理解为,先有父类才能有子类。
方法都是放在方法区的,在运行时会被加载到栈上去运行。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2