Reputation: 73
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
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