先上桌结论:
父类静态属性(成员变量) > 父类静态代码块 > 子类静态属性 > 子类静态代码块 > 父类非静态属性 > 父类非静态代码块 > 父类构造器 > 子类非静态属性 > 子类非静态代码块 > 子类构造器
这么长怎么记呀?!
这里帮大家小结几个特点:
1 /** 2 * @author Lean.Li 3 * @date 2018/10/15 4 */ 5 public class Main { 6 7 static class A { 8 static Hi hi = new Hi("A"); 9 10 Hi hi2 = new Hi("A2"); 11 12 static { 13 System.out.println("A static"); 14 } 15 16 { 17 System.out.println("AAA"); 18 } 19 20 public A() { 21 System.out.println("A init"); 22 } 23 } 24 25 26 static class B extends A { 27 static Hi hi = new Hi("B"); 28 29 Hi hi2 = new Hi("B2"); 30 31 static { 32 System.out.println("B static"); 33 } 34 35 { 36 System.out.println("BBB"); 37 } 38 39 public B() { 40 System.out.println("B init"); 41 } 42 } 43 44 static class Hi { 45 public Hi(String str) { 46 System.out.println("Hi " + str); 47 } 48 } 49 50 public static void main(String[] args) { 51 System.out.println("初次 new B:"); 52 B b = new B(); 53 System.out.println(); 54 System.out.println("第二次 new B:"); 55 b = new B(); 56 } 57 58 }
运行结果如下:
初次 new B: Hi A A static Hi B B static Hi A2 AAA A init Hi B2 BBB B init 第二次 new B: Hi A2 AAA A init Hi B2 BBB B init
原文:https://www.cnblogs.com/Carrol/p/11541626.html