从继承类重写方法

问题描述:

在下面的代码中,我重写了这个继承的“小时工”类中的“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吗?),否则大师们将永远不会把它捡起来! –

只是一个想法,但你可能想给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