Java类加载

xiaoxiao2021-02-27  125

package com.chenming.test; public class ExaminationDemo { public static void main(String[] args) { System.out.println("Class Loading:"); new D(); } } class E { E() { System.out.println("E构造方法"); } public void methodE() { System.out.println("E的普通方法"); } } class F { F() { System.out.println("F构造方法"); } public void methodF() { System.out.println("F普通方法"); } } class B { E e = new E(); static F f = new F(); public String strB = getStrB(); static { System.out.println("B静态代码块"); f.methodF(); } { System.out.println("B匿名代码块"); } B() { System.out.println("B构造方法"); e.methodE(); } private String getStrB() { System.out.println("初始化B的实例成员变量"); return "strB"; } } class C extends B { static { System.out.println("C静态代码块"); } { System.out.println("C匿名代码块"); } C() { System.out.println("C构造方法"); } } class D extends C { public String strD = getStrD(); public static String strD1 = getStrD1(); static { System.out.println("D静态代码块"); } { System.out.println("D匿名代码块"); } D() { System.out.println("D构造方法"); } public String getStrD() { System.out.println("实例化D的普通变量"); return "strD"; } public static String getStrD1() { System.out.println("实例化D的静态变量"); return "strD1"; } } Class Loading: F构造方法 B静态代码块 F普通方法 C静态代码块 实例化D的静态变量 D静态代码块 E构造方法 初始化B的实例成员变量 B匿名代码块 B构造方法 E的普通方法 C匿名代码块 C构造方法 实例化D的普通变量 D匿名代码块 D构造方法 Java类加载小结:           父类>子类           静态>普通           静态实例变量>静态代码块           实例成员变量>匿名代码块>构造方法           

          父类静态实例变量-->父类静态代码块-->子类静态实例变量-->子类静态代码块--> 父类一般实例变量

-->父类匿名代码块-->父类构造方法-->子类实例变量-->子类匿名代码块-->子类构造方法。

转载请注明原文地址: https://www.6miu.com/read-13435.html

最新回复(0)