【问题标题】:Overriding Method from Inherited Class从继承的类中重写方法
【发布时间】:2015-07-09 23:41:52
【问题描述】:

在下面的代码中,我在“小时工”类中重写了“支付”方法,这个类继承自该类。 super.pay 的计算是工资率 * 工作时间。对于此推销员类,根据添加到推销员对象的销售额,工资中会添加佣金。但是,当我在推销员司机课程上调用 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;
}

}

【问题讨论】:

  • 你应该为相关语言(java?)添加一个标签,否则大师永远不会接受它!

标签: methods overriding


【解决方案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);

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

【讨论】:

  • 这是佣金的初始化问题。 this.commission 解决了它。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多