2013-10-27 71 views
0

我在學校學習Java,並且遇到了繼承和構造函數的問題。 我有3個類,A類,B類和C類。 A類是超類,B類擴展A類和C類擴展B類。 B類有一個構造函數,其形式(參數)是一個字符串。一切都好,直到這裏。 所以現在,我將Class B擴展到Class C.在Class C中,我需要創建一個構造函數,其中 具有一個Class B的實例作爲其參數。然後我需要從B類提取一些信息 ,並將其存儲在C類中。Java:子類的構造函數具有父類的對象

這裏是我們的代碼。

public class B extends A { 

int b; 

public B(int b) { 
this.b=b; 
} 

} 

public class C extends B { 

int c; 

public C(B b) { 

this.c = b.b; 

} 

} 

以我主()

我有下面的代碼行創建的Ç

實例

ÇC_C =新C(新B(12));

編譯時,出現錯誤。 錯誤:類B中的構造方法B不能應用於給定的類型;

原因:實際的和正式的參數列表長度

不同請問你們能幫助我明白我做了什麼錯?

+0

您可能忘記了重新編譯其他類文件。 – SLaks

回答

2

您必須顯式調用B的由C的構造函數的構造函數,因爲在B類沒有定義默認構造函數

public C(B b) { 
    super(0); 
    this.c = b.b; 
} 
+2

或者更可能的是,'super(b.b);'。 – chrylis

0

你不需要從B到C.重新加載信息簡單地使B的場可見到C如讓他們保護

相關問題