创建java对象对于做java程序开发的我们来说再简单不过了,也就是new 构造方法,不过很多人可能对于内部执行的过程不是很清楚。我们知道java的类是动态加载的,只有当需要的时候才会加载入虚拟机,分配内存,创建对象。本文就是用一个小例子来说明随想创建的一些基本过程。
看例子程序:
首先一个简单的类Bird:
public class Bird {
String a = "i am a in Bird";
static String d = "i am d";
static {
System.out.println("static Bird static block");
System.out.println("static Bird d:"+d);
}
{
System.out.println("Construct block Bird ");
System.out.println("Construct block Bird d:"+d +" " + "a:"+a);
}
public Bird() {
System.out.println("Constructor Bird ");
System.out.println("Constructor Bird d:"+d +" " + "a:"+a);
}
}
Bird的子类Duck:
public class Duck extends Bird{
String a = "i am a in Duck";
String b = "i am b";
static String c = "i am c";
static {
System.out.println("static Duck static block");
System.out.println("static Duck c:"+c);
}
{
System.out.println("Construct block Duck ");
System.out.println("Construct block Duck a:"+a + " " + "b:" + b);
}
public Duck() {
System.out.println("Constructor Duck ");
System.out.println("Constructor c:"+c);
System.out.println("Constructor a:"+a + " " + "b:" + b);
}
}
执行结果:
static Bird static block
static Bird d:i am d
static Duck static block
static Duck c:i am c
Construct block Bird
Construct block Bird d:i am d a:i am a in Bird
Constructor Bird
Constructor Bird d:i am d a:i am a in Bird
Construct block Duck
Construct block Duck a:i am a in Duck b:i am b
Constructor Duck
Constructor c:i am c
Constructor a:i am a in Duck b:i am b
从这个结果我们可以得出一个对象创建的基本执行流程:
1.基类static域赋值
2.基类static块执行
3.子类static域赋值
4.子类static块执行
5.基类成员变量赋值
6.基类构造块执行
7.基类构造方法
8.子类成员变量赋值
9.子类构造块执行
10.子类构造方法
就这样介于,本人对于java认识也不深入,如果有什么有误的地方,希望各位指正哈。