2017-04-08 63 views
1

新構件,第一次海報。請原諒我的問題中的任何錯誤或失禮。構造表示「沒有發現參數」時參數提供

超類:

public Person(String n,String pos, String db, String dW, TimePeriods tP,double bS,IManager m){ 
    setName(n); 
    position=Position.valueOf(pos); 
    dob=LocalDate.parse(db); 
    dateWorking=LocalDate.parse(dW); 
    timePeriod=tP; 
    baseSalary=bS; 
} 

子類:

private CEO(String n,String pos, String dob, String dW, TimePeriods tP,double bS, IManager m){ 
} 

我的錯誤,發生在子類CEO構造:

構造函數Person類人不能被應用到給定的類型; 要求:字符串,字符串,字符串,字符串,TimePeriods,雙,iManager中
發現:沒有參數的原因:實際的和正式的參數列表的長度不同

誰能幫我找出爲什麼不找到我的論點?

+1

我沒有看到顯式調用'超()'。 –

回答

1

因爲你沒有調用Person構造函數(使用super(..))內CEO類的構造函數,編譯器將嘗試添加默認super()CEO構造函數的第一線。

但是,調用默認super()編譯失敗,你沒有零參數的構造函數用於Person

所以,在你CEO類中添加super(n, pos, dob, etc..)呼叫,如下圖所示:

public CEO(String n,String pos, String dob, 
     String dW, TimePeriods tP,double bS, IManager m){ 
    super(n, pos, dob, dw, tP, bS, m);//calls superclass i.e., Person constructor 
} 

而且,你已經得到巨大的參數列表構造你的類,這是非常難讀/維持 ,我強烈建議你需要考慮使用Builder模式(看here),使其降低了複雜性和代碼可以很容易閱讀和維護重構你的類。

+0

快速而美麗!非常感謝你的幫助。 我肯定會尋找到Builder模式,但我目前的項目結構已經由教科書決定,我不能隨意去改變它。 再次感謝! –