前言
在Java程序中,当实例化对象时,对象的所在类的所有成员变量都要进行初始化,只有初始化完成才会调用构造方法创建对象。来一起看看吧~
初始化规则
- 变量优先于块,静态优先于非静态。
- 父类优先于派生类初始化。
- 按照成员变量定义的顺序来初始化,即使变量定义散布于各种方法定义之间,它们仍然会在构造方法被调用前完成初始化。
举栗 代码
class Father {
public Father() {
System.out.println("父类构造方法");
}
String str = "父类非静态变量";
{
System.out.println(str);
System.out.println("父类非静态块");
}
static String strStatic = "父类静态变量";
static {
System.out.println(strStatic);
System.out.println("父类静态块");
}
}
public class Son extends Father {
public Son() {
System.out.println("子类构造器 ");
}
String str = "子类非静态变量";
{
System.out.println(str);
System.out.println("子类非静态块");
}
static String strStatic = "子类静态变量";
static {
System.out.println(strStatic);
System.out.println("子类静态块");
}
public static void main(String[] args) {
new Son();
}
}
//运行结果
父类静态变量
父类静态块
子类静态变量
子类静态块
父类非静态变量
父类非静态块
父类构造方法
子类非静态变量
子类非静态块
子类构造器
关注即可提高学习效率!我是Aime菌,下期再见!Peace~