java子父类初始化顺序

来源:互联网 发布:淘宝迅雷会员卡密 编辑:程序博客网 时间:2024/05/17 23:59
class parent{
static String name = "yajie";
static{
System.out.println("父类静态代码块:name= " + name);
}
String teacher = "老师";
{
System.out.println("父类构造代码块:teacher = " + teacher);
}
public parent(){
super();
System.out.println("父类构造方法");
}

}


class son extends parent{
static int ager = 12;
static {
System.out.println("子类静态代码块:ager = " + 12);
}
String student = "学生";
{
System.out.println("子类构造代码块:student = " + student);
}
public son(){
super();
System.out.println("子类构造方法");
}

}

public static void main(String[] args) {
new son();
}


父类静态代码块:name= yajie
子类静态代码块:ager = 12
父类构造代码块:teacher = 老师
父类构造方法
子类构造代码块:student = 学生
子类构造方法

分析顺序:1.java通过loadClass方法首先加载父类,即先按先后顺序初始化父类的静态成员变量和静态代码块

2.接着按先后顺序初始化子类静态方法和静态代码块

3.再执行子类构造方法的super();方法,如果不写也会默认执行的,执行super();会实例化父类对象即初始化父类里面的成员变量,构造代码块,然后是父类构造方法

4.返回来接着实例化子类即初始化子类的成员变量,构造代码块,最后再执行子类的构造方法

原创粉丝点击