类的初始化顺序

从原理来理解继承关系的类初始化和实例化的顺序

瘦欲@ 提交于 2019-11-28 16:01:50
就像之前的一个评论.我们学习的是思路. 很多人都知道继承关系的类的初始化和实例化的顺序,但如果忘记了怎么办? 如何找到自己的答案? 又如果遇到的问题是关于泛型的擦除问题,又该如何去分析? 思路,重点是思路.泛型擦除先不谈.看继承. 首先给出一个例子,看看它的输出是什么. public class A { private static String a = "NA"; private String i="NA"; { i = "A"; System.out.println(i); } static { a = "Static A"; System.out.println(a); } public A() { System.out.println("Construct A"); } } public class B extends A { private static String b = "NB"; private String j="NB"; { j = "B"; System.out.println(j); } static { b = "Static B"; System.out.println(b); } public B() { System.out.println("Construct B"); } } public class C { public static