public class A { static{ System.out.println("static in class A"); } public A(){ System.out.println("class A"); } }
public class SubA extends A { static { System.out.println("static in class SubA"); } public SubA() { super(); System.out.println("class SubA"); } public SubA(String sa) { System.out.println("class SubA " + sa); } }
public class StaticTest { public static void main(String[] args) { SubA subA1 = new SubA("111111"); SubA subA2 = new SubA("222222"); SubA subA3 = new SubA("333333"); } }
输出结果:(static语句最先打印,并且只打印一次;先打印父类构造函数内容,后打印子类构造函数内容;调用了带参数的构造函数,就不会再调用默认无参构造函数)
static in class Astatic in class SubA
class A
class SubA 111111
class A
class SubA 222222
class A
class SubA 333333