的情況是我要繼承的對象有一個更清潔的構造函數接口:繼承與構造函數參數類在Java中
class BaseClass {
public BaseClass(SomeObject object){
...
}
}
class SubClass extends BaseClass{
private SubObject subObject = new SubObject();
public SubClass(){
super(new SomeObject(subObject)); // doesn't compile
}
}
但要做到這一點,我需要在構造函數之前做的東西像例子但不能這樣做,因爲Java不允許這樣做。有沒有辦法解決?我開始覺得,如果你的類被設計爲子類,它應該總是實現默認的構造函數,併爲它需要的值提供setter ...有時,如果你創建一個新的對象直接進入超級構造函數作爲一個參數,但如果你需要一個對你創建的對象的引用,那麼你就會被洗掉。
你得到的編譯錯誤是什麼? –
在調用超類型構造函數之前無法引用子對象 – palto
*顯式調用構造函數時無法引用實例字段subObject * –