在下面的代码中,我重写了这个继承自的“每小时员工”类中的“pay”方法。 super.pay计算是payrate * hoursworked。对于此销售员类,薪酬根据添加到销售员对象的销售额添加到工资中。但是,当我在销售员司机类上调用pay方法时,即使我增加了工作时间和销售额,也没有添加佣金。我附上了以下代码:
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 :(得分: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);
这可能会导致您的付款显示为佣金无效。