本帖最后由 谭辉 于 2013-3-23 09:14 编辑
对象初始化过程:
1. 因为new用到了.class所以会先找到 .class文件并加载到内存中.
2. 执行该类中的static代码块,给.class类进行初始化
3. 在堆内存中开辟空间,分配内存地址
4. 在堆内存中建立对象的特有属性.并进行默认初始化.
5. 对属性进行显示初始化
6. 对对象进行构造代码块初始化
7. 对对象进行对应的构造函数初始化
8. 将内存的地址赋给栈内存中的p变量
new SubDemo();过程:
先是调用父类的构造函数,此时父类的成员变量i已经显示初始化为2
进入父类的构造函数体内后调用子类的display()方法打印子类的成员变量i
而此时,子类的成员变量只是进行了默认初始化而还未进行显示初始化所以为0
|