2015-02-11 27 views
0

我有A類和寫一個子類B,C.A僅具有一個構造,其是參數化。 C必須調用B的超級構造函數,B必須調用A的超級構造函數。現在我想用對象作爲參數。因此參數對象具有保持℃的參考我怎樣才能隱式和明確地調用構造函數?

語言:JAVA

CALSS A:B

public class A { 

private C c; 


protected A(C c) { 
    this.c = c; 
} 
} 

類別:

public class B extends A { 

protected B(C c) { 
    super(c); 
} 
} 

C類:

enter image description here

現在,當我想調用構造函數一樣,Eclipse的說:

Cannot refer to 'this' nor 'super' while explicitly invoking a constructor 

我如何可以調用父類的構造函數與 「本」 的實例。 請好好解釋這個錯誤並給出解決方法。

+1

你爲什麼標記C++或Java-EE?我懷疑標籤垃圾郵件只是爲了增加對你的問題的關注。請不要這樣做,除非你想吸引的注意力是負面的。 – 2015-02-11 03:07:38

+3

你的程序結構可能被打破 - 一個超類不應該要求自己的子類的知識或使用。 – 2015-02-11 03:11:45

+1

你爲什麼認爲你需要將'this'傳遞給'A'?由於'C'是'A'的子類型,'A'已經擁有它(也使用'this')。 – Radiodef 2015-02-11 03:13:33

回答

0

我如何可以調用父類的構造函數與「本」的實例。

你不行。

給予解決這一點。

更改super(this)super(null)

我怎樣才能調用構造函數隱含

通過使用反射,像類對象上調用newInstance。或者使用工廠方法。或使用new關鍵字。

相關問題