// 构造器 public Parent() { System.out.println("父类--构造器"); } }//如果你想把这两个类放在同一个文件且名字起为SubClass,父类前不能加public public class SubClass extendsParent { // 静态变量 public static String s_StaticField = "子类--静态变量"; // 变量 public String s_Field = "子类--变量"; // 静态初始化块 static { System.out.println(s_StaticField); System.out.println("子类--静态初始化块"); } // 初始化块 { System.out.println(s_Field); System.out.println("子类--初始化块"); } // 构造器 public SubClass() { System.out.println("子类--构造器"); } // 程序入口 public static void main(String[] args) { newSubClass(); } } 结果显示: 父类--静态变量 父类--静态初始化块 子类--静态变量 子类--静态初始化块 父类--变量 父类--初始化块 父类--构造器 子类--变量 子类--初始化块 子类--构造器
规则2(静态变量和静态初始化块): 静态变量和静态初始化块是依照他们在类中的定义顺序进行初始化的。同样,变量和初 始化块也遵循这个规律。 public class testOrder{ // 静态变量 public static TestA a = new TestA(); public TestC c = new TestC(); // 静态变量 public static TestB b = new TestB(); public testOrder(){ System.out.println("in constract"); } // 静态初始化块 static { System.out.println("静态初始化块"); } public static void main(String[] args) { newtestOrder(); } } class TestA { public TestA() { System.out.println("Test--A"); } } class TestB { public TestB() { System.out.println("Test--B"); } } class TestC { public TestC() { System.out.println("Test--C"); } } 结果显示: Test--A Test--B 静态初始化块 Test--C