总的来说:
父类静态代码块->子类静态代码块->子类main()方法->父类构造块->父类构造方法->子类构造块->子类构造方法
注意,就算是静态的方法也需要调用才能使用,初始化只涉及到属性和构造块、构造方法,不涉及到一般的方法。
package com.tonyluis; class superClass { public superClass() { System.out.println("构造方法"); } { System.out.println("构造块"); } static { System.out.println("静态方法块"); } } public class Test extends superClass { public static void main(String args[]) { System.out.println("Test main"); //Test test = new Test(); } public Test() { System.out.println("Test构造方法"); } { System.out.println("Test构造块"); } static { System.out.println("Test静态方法块"); } }
输出:
静态方法块
Test静态方法块
Test main
取消掉main()方法的注释,输出
静态方法块
Test静态方法块
Test main
构造块
构造方法
Test构造块
Test构造方法