覆盖继承的方法 Class

Overriding Method from Inherited Class

在下面的代码中,我重写了 "hourly employee" class 这个继承自的 "pay" 方法。 super.pay 的计算公式是工资率 * 工作时数。对于这个销售员 class,工资中有佣金是根据添加到销售员 object 的销售额添加到工资中的。但是,当我对销售员 driver class 调用 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;
}

}

只是一个想法,但为了清楚起见,您可能想将 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);

这可能是导致您的付款看起来好像佣金无效的原因。