Person p = new Person();
1:JVM在指定的路径下读取Person.class,并加载进内存。如果有直接父类的话(object不算),先把父类加载进内存。
2:在堆内存中开辟空间,
3:在对象空间中的,对对象的属性进行默认初始化
4:调用对应的构造方法进行初始化,
5:运行第一行中的super()方法,即调用父类的构造方法
6:父类构造方法执行完毕,对子类成员属性进行显式初始化
7:对子类属性的特定初始化
8:将地址赋值给对象名
package com.sxu.cs.inherit;
/*
* 通过这个程序显示java中构造一个对象的过程
* 通过内存图解加深理解
*父类的同名方法被子类的同名方法覆盖
* 1 调用父类的构造方法
* 2 默认初始化
* 3 显式初始化
* 4
* */
public class ProcessOfConstructing {
public static void main(String[] args) {
// TODO Auto-generated method stub
Zi fu = new Zi();
}
}
class Fu{
int num;
Fu(){
super();
System.out.println("entering the constructor of Fu...");
show();
return;
}
void show(){
System.out.println("fu show......"+this.num);
}
}
class Zi extends Fu{
int num = 8;//默认初始化
Zi(){
super();
num = 10;//特定初始化
System.out.println("entering the constructor of Zi...");
return;
}
void show(){
System.out.println("zi show......"+this.num);
}
}