2015-07-09 143 views
1

在下面的代碼中,我重寫了這個繼承的「小時工」類中的「pay」方法。 super.pay的計算是payrate * hoursworked。對於這個推銷員類,薪資根據銷售員添加到銷售員對象中的佣金增加到佣金中。但是,當我在推銷員駕駛員課程上調用付費方法時,即使增加了工作時間和銷售額,也不會增加佣金。我附上下面的代碼:從繼承類重寫方法

package sales; 

public class JuniorSalesman extends Hourly { 

protected double commission; 
private double totalSales; 


public JuniorSalesman(String eName, String eAddress, String ePhone, String socSecNumber, double rate, double commission) { 

    super(eName, eAddress, ePhone, socSecNumber, rate); 

    totalSales = 0; 
     } 

public void addSales(double sales) 
{ 
    totalSales += sales; 
} 

public double pay() 
{ 
    double payment = super.pay() + (totalSales * commission); 

    totalSales = 0; 

    return payment; 
} 

public String toString() 
{ 
    String result = super.toString(); 

    result += "\nTotal Sales: " + totalSales; 

    return result; 
} 

} 
+0

您應該添加一個標籤爲相關語言(java嗎?),否則大師們將永遠不會把它撿起來! –

回答

1

只是一個想法,但你可能想給totalSales = 0重構爲爲清楚起見單獨resetSales()方法。

考慮看看你的構造:

protected double commission; 
private double totalSales; 

public JuniorSalesman(..., double commission) { 
    super(...); 
    totalSales = 0; 
} 

我沒有看到任何東西等同:

this.commission = commission;

所以commission的價值可能永遠0.0默認雙重價值造成pay()計算支付爲:

double payment = super.pay() + (totalSales * 0.0); 

這可能是導致您的付款出現的原因,就好像佣金沒有效果一樣。

+0

這是問題的初始化佣金。 this.commission解決了它。謝謝! – Kevin