1.子类继承父类,实例化子类对象时
父类静态代码块 ------》子类静态代码块 ------》父类成员变量默认初始化 -------》(父类构造代码块-,显示初始化)两者谁在前谁先执行 ---------》父类构造方法------》子类成员变量默认初始化 -------》(子类构造代码块,子类成员变量显示初始化)两者谁在前谁先执行 ------》子类构造方法
2.单一类,实例化对象时
静态代码块 --》成员变量默认初始化 --》 成员变量显示初始化 --》 非静态代码块
测试代码:
package cn.tedu.oop;
public class JiCheng {
public static void main(String[] args) {
new Son();
}
}
class Fa{
//隐式初始化
//构造代码块----------------------------与显式初始化谁在前谁先执行
{
System.out.println(this.a);
}
//显示初始化
int a=10;
//构造方法----------------------------一般最后执行
Fa(){
System.out.println(a);
}
}
class Son extends Fa{
//显式初始化
int a=11;
//构造代码块----------------------------与显式初始化谁在前谁先执行
{
System.out.println(this.a);
System.out.println(super.a);
}
//构造方法----------------------------一般最后执行
Son(){
super();
System.out.println(a);
}
}
运行结果: