2014-02-23 54 views
-1

問:鑑於流量:繼承請解釋一下這些程序

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); 
} 
} 

結果(選件)

A. 13 B. 134 C. 1234 D. 2134 E. 2143 

答:C

據我第一次我們有在默認超java的構造函數 所以在我的程序中首先它會調用默認超級,並通過在我的子類中使用super打印1 t調用構造函數AND打印2 子類通常打印3,4。

它是正確的嗎?如果不對,請糾正。

+0

爲什麼不自己嘗試一下,並檢查結果? – prabindh

回答

0

是的,它應該打印1234

new Y(5) 

調用此constractor

Y(int y) { 

this(); System.out.println(4); 

} 

它通過調用 「這()」 將調用Ÿ的默認constractor。

Y() { super(6); System.out.print(3); } 

這將調用X的 「X(INT X)」 構造。 它調用這個(在X上),所以它調用X的默認構造函數。

打印「1」。 然後我們回去,並打印2. 然後回到爲Y的默認構造函數和打印3 最終,爲Y的(int)構造,打印4.

一個真正困難的方法來打印「1234」 :)