从继承类重写方法

时间:2015-07-09 23:41:52

标签: methods override

在下面的代码中,我重写了这个继承自的“每小时员工”类中的“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;
}

}

1 个答案:

答案 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);

这可能会导致您的付款显示为佣金无效。