今天我們來探討一個經典的 Java 基礎題目,主題圍繞著建構子區塊(Instance Initialization Block)與多載建構子之間的互動,以及它們如何影響靜態計數器的統計結果。
package Dec2016;
public class Ques1207 {
public static void main(String[] args) {
new Test();
new Test(1);
new Test("1");
System.out.println("實例數量為:" + Test.getNumOfInstances());
}
}
class Test {
private static int numOfInstances = 0; // 記錄實例數量
{
numOfInstances++; // 建構子區塊:每建立一個實例就執行一次
}
public Test() { }
public Test(int num) { }
public Test(String str) {
this(); // 顯式呼叫無參數建構子
}
public static int getNumOfInstances() {
return numOfInstances;
}
}
主程式能夠正常編譯並執行,輸出結果為:
實例數量為:3
這道題目精準考察了 Java 物件初始化的順序細節,是建構子機制理解是否扎實的試金石。