关于构造函数及游离块的顺序

package com.spoto.test;
 

public class Test1 {
 

private static String s1 = "父类静态变量";
 

private String s2 = "父类变量";
 

public Test1() {
 
System.out.println("父类构造器");
 
}
 
/**
 
* 静态代码块
 
*/
 

static {
 
System.out.println("父类静态块");
 

}
 
/**
 
* 游离块
 
*/
 
{
 
System.out.println(s2);
 
System.out.println(s1);
 
System.out.println("父类游离块");
 

}
 

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

}
 

class TestChild extends Test1 {
 

private static String s1 = "子类静态变量";
 

private String s2 = "子类变量";
 
/**
 
* 静态代码块
 
*/
 

static {
 
System.out.println("子类静态块");
 

}
 
/**
 
* 游离块
 
*/
 
{
 
System.out.println(s2);
 
System.out.println(s1);
 
System.out.println("子类游离块");
 

}
 

public TestChild() {
 
System.out.println("子类的构造器");
 
}
 

}

运行结果:

父类静态块
子类静态块
父类变量
父类静态变量
父类游离块
父类构造器
子类变量
子类静态变量
子类游离块
子类的构造器

参考:http://java.bootcamp.cn/forum.php?mod=viewthread&tid=1976

原文地址:https://www.cnblogs.com/jancco/p/2488971.html