package zhao;
public class TestClass extends BaseClass {
static{
System.out.println("我输出的是 子类静态块内容→"+TestClass.name);//第四步
}
{
System.out.println("我输出的是 子类非静态块内容→"+this.code);//第十三步
}
static String name = "子类静态变量";//第五步
String code ="子类非静态变量初始化";//第十四步
TestClass(){
code = "子类构造方法里该修了的 code 的值";//第十六步
System.out.println("我输出的是 子类构造体→"+code);//第十七步
}
static{
System.out.println("我输出的是 子类静态块内容→"+name);//第六步
}
{
System.out.println("我输出的是 子类非静态块内容→"+code);//第十五步
}
/** *//**
* @param args
*/
public static void main(String[] args) {
new TestClass();
}
}
class BaseClass{
static {
System.out.println("我输出的是 父类静态块内容→"+BaseClass.basename);//第一步,因为basename先初始化默认值!所以为null
}
{
System.out.println("我输出的是 父类非静态块内容→"+this.basecode);//第七步,因为basecode先初始化默认值!所以为null
}
static String basename = "父类静态变量"; //第二步
String basecode ="父类非静态变量初始化";//第八步
BaseClass(){
basecode = "父类构造方法里该修了的 basecode 的值";//第十一步
System.out.println("我输出的是 父类构造体→"+basecode);//第十二步
}
static {
System.out.println("我输出的是 父类静态块内容→"+basename);//第三步
}
{
System.out.println("我输出的是 父类非静态块内容→"+basecode);//第九步
}
}
1:父类静态变量的默认初始化
2.父类静态变量初始化,父类静态块代码(静态变量和静态块代码中,哪个在前面就先执行哪个)
3:子类静态变量的默认初始化
4.子类静态变量,子类静态块代码(静态变量和静态块代码中,哪个在前面就先执行哪个)
5:父类非静态变量的默认初始化
6:父类非静态变量,父类非静态块代码(非静态变量和非静态块代码中,哪个在前面就先执行哪个)
7.父类构造体
8.子类非静态变量的默认初始化
9.子类非静态变量,子类非静态块代码(非静态变量和非静态块代码中,哪个在前面就先执行哪个)
10:子类构造体