1、对象的初始化
(1)静态对象的初始化
程序中主类的静态变量会在main方法执行前初始化,仅初始化一次。
不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。
(2)非静态对象的初始化
在创建对象时,对象所在类的所有数据成员会首先进行初始化。
基本类型:int 型,初始化为0。
如果为对象:这些对象会按顺序初始化。
※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。
构造方法的作用就是初始化。
2、继承时,对象的初始化过程
(1)主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private。
(2)主类静态成员的初始化。
(3)主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个超类的默认构造方法前,先进行对此超类进行非静态对象的初始化。
(4)主类非静态成员的初始化。
(5)调用主类的构造方法。
public class ClassA {
private String i;
private static String j;
{
i = "A";
System.out.println(i);
}
static{
j = "SA";
System.out.println(j);
}
public ClassA(){
System.out.println("CA");
}
}
public class ClassB extends ClassA{
private String i;
private static String j;
{
i = "B";
System.out.println(i);
}
static{
j = "SB";
System.out.println(j);
}
public ClassB(){
System.out.println("CB");
}
public static void main(String[] args) {
new ClassB();
}
}
结果:
SA
SB
A
CA
B
CB