1. 程式人生 > >指出下列程式的正確執行結果()

指出下列程式的正確執行結果()

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的構造方法