关于类加载顺序
父类:
package org.com.extendTest; public abstract class PerantClass { static int a = init(); int b=initb(); public static int init() { System.out.println("我是父类(静态变量)"); return 1; } public static int initb() { System.out.println("我是父类(成员变量)"); return 1; } static { System.out.println("我是父类(静态代码块)!"); } public PerantClass() { System.out.println("我是父类(构造器)"); } { System.out.println("我是父类(普通代码块)!"); } public void sayHello() { System.out.println("我是父类(成员方法)"); } }
子类:
package org.com.extendTest; public class ChildClass extends PerantClass { static { System.out.println("我是子类(静态代码块)!"); } static int a = init(); public static int initc() { System.out.println("我是子类(成员变量)"); return 1; } { System.out.println("我是子类(普通代码块)!"); } int b=initc(); public ChildClass() { System.out.println("我是子类(构造器)"); System.out.println("--------------------"); } public void sayHello() { System.out.println("我是子类(成员方法)"); } public static void main(String[] args) { ChildClass class1 = new ChildClass(); class1.sayHello(); } public static int init() { System.out.println("我是子类(静态变量)"); System.out.println("--------------------"); return 1; } }
结果:
结论:1.先父类后子类
2.static优先加载
3.代码块和成员变量加载顺序为代码顺序
3.static > 普通成员变量=普通代码块 > 构造器 > 成员方法