父类father如下:
package ja.com.te;
public class father {
//父类静态变量
static int age =40;
public father() {
System.out.println("父类构造方法");
}
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类构造代码块");
}
public void test1(){
System.out.println("父类普通方法");
}
}
子类如下:
package ja.com.te;
public class child extends father{
static int age=20;
public child(){
System.out.println("子类无参构造方法");
}
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类构造代码块");
}
public void test2(){
System.out.println("子类普通方法");
}
}
测试:
package ja.com.te;
public class test3 {
public static void main(String[] args) {
new child();
}
}
结果:
结论:子类对象初始化时各部分的优先顺序:静态变量初始化 > 静态代码块 > 构造代码块 > 构造方法 > 普通代码块,且优先初始化父类