Kevin
Kevin

Reputation: 73

Overriding Method from Inherited Class

In the below code, I am overriding the "pay" method in an "hourly employee" class this one inherits from. The super.pay calculation is payrate * hoursworked. For this salesman class, the pay has commissions added to the pay based on sales added to a salesman object. However, when I call the pay method on a salesman driver class, it is not adding the commission even though I added hours worked as well as sales. I have attached the code below:

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;
}

}

Upvotes: 1

Views: 101

Answers (1)

Aaron Zou
Aaron Zou

Reputation: 414

Just a thought, but you might want to refactor the totalSales = 0 into a separate resetSales() method for clarity.

Taking a look at your constructor:

protected double commission;
private double totalSales;

public JuniorSalesman(..., double commission) {
    super(...);
    totalSales = 0;
}

I don't see anything equivalent to:

this.commission = commission;

So the value of commission is likely always the default double value of 0.0, causing pay() to calculate the payment as:

double payment = super.pay() + (totalSales * 0.0);

This is likely what's causing your payment to appear as if the commission has no effect.

Upvotes: 1

Related Questions