指出下列程式的正確執行結果()
阿新 • • 發佈:2018-12-09
public class TestStatic { public static void main(String[] args) { A ab = new B(); ab = new B(); } } class A { static { System.out.print("1"); } public A() { System.out.print("2"); } } class B extends A { static { System.out.print("a"); } public B() { System.out.print("b"); } }
A.12ab B.ab12ab C.ab12ab12 D.1a2b2b
答案:D
解析:用static修飾的方法或者程式碼塊,在類載入時會載入,無需通過例項化物件就可以通過類名來呼叫,因為類B的父類是A,所以會先輸出類A的static程式碼塊的內容,然後再去看看其他地方有沒有使用到static的地方,有的話也會先輸出其內容,B類中也有static程式碼塊,所以輸出順序僅此於父類的static,當你ab = new B();時,static程式碼塊不會輸出,因為在整個程式中,static程式碼塊只會載入一次,之後的輸出順序為類A的構造方法,類B的構造方法