从继承类重写方法
问题描述:
在下面的代码中,我重写了这个继承的“小时工”类中的“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;
}
}
答
只是一个想法,但你可能想给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
您应该添加一个标签为相关语言(java吗?),否则大师们将永远不会把它捡起来! –