class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("static A"); } } public class HelloB extends HelloA { public HelloB() { System.out.println("HelloB"); } { System.out.println("I'm B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } }
答案:java
static A static B I'm A class HelloA I'm B class HelloB
解析:說實話我以爲這題很好,考查靜態語句塊、構造語句塊(就是隻有大括號的那塊)以及構造函數的執行順序。函數
對象的初始化順序:(1)類加載以後,按從上到下(從父類到子類)執行被static修飾的語句;(2)當static語句執行完以後,再執行main方法;(3)若是有語句new了自身的對象,將從上到下執行構造代碼塊、構造器(二者能夠說綁定在一塊兒)。spa