2013-12-12 36 views
-3

問題27 鑑於:本超級關鍵字如何在這個例子中工作?

class X { 
    X() { 
     System.out.print(1); 
    } 

    X(int x) { 
     this(); 
     System.out.print(2); 
    } 
} 

public class Y extends X { 
    Y() { 
     super(6); 
     System.out.print(3); } 

    Y(int y) { 
     this(); 
     System.out.println(4); 
    } 

    public static void main(String[] a) { 
     new Y(5); 
    } 
} 

ANS是1234有人可以解釋我怎麼樣?

+0

這是哪一種語言? –

+0

這是功課嗎? –

+0

不,我正在學習JAVA。 如果這是作業,我不會提到答案。 – Gaurav

回答

0

答案不是數字,而是字符串"1234"
它顯示瞭如何調用類型爲XY的構造函數。

main函數調用Y的第二個構造方法。
因爲YX的一個子類,因此首先調用X的構造函數。

+0

但爲什麼X在這裏叫,這是我的問題? 超級構造函數僅在提及時調用。而在這裏沒有在「Y(int y)」方法中調用超級構造函數。 – Gaurav

+0

@Gaurav:在你的例子中,'Y(int y)'調用'Y()',然後調用'X(int x)' - 調用'X()',只需按照call調用。順便說一下,超級構造函數被稱爲* always *。在這種情況下,它被調用來選擇特定的構造函數。 – joe

相關問題