Which statement is true about the default constructor of a top-level class?



A. It can take arguments.
B. It has private access modifier in its declaration.
C. It can be overloaded.
D. The default constructor of a subclass always invokes the no-argument constructor of its superclass.

題解

選項A,預設的建構子不能傳入引數。

選項B,預設的建構子使用的存取權修飾字與其類別的存取修飾字是相同的。

選項C,預設建構子是當類別中沒有明確定義建構子時由編譯器自動插入,但如果要達成多載,就必須要在類別中明確定義有參數的建構子。一旦在類別中定義建構子了,這個類別就沒有「預設建構子」了,所以「預設建構子」根本不可能會有被多載的情況。

選項D,預設的建構子預設會去呼叫上層無參數的建構子。例如A類別的預設建構子,自動產生的程式碼會長得像是以下這樣:

public A(){
    super();
}