2016-04-30 11 views
-1

В классе моей комиссии я пытаюсь переписать метод оплаты из родительского класса (почасовой), чтобы вычислить плату за отработанные часы, как бы я это сделал? Мой код для класса Commission и Hourly, который является родителем, ниже, происходит переписывание, где я помещаю ????методы перезаписи и использование супер

public class Commission extends Hourly 
{ 
    double total_sales; 
    double commission_rate; 

    public Commission(String name, String address, String phone, 
        String soc_sec_number, double rate,double commission_rate) 
    { 
    super( name, address, phone, 
         soc_sec_number, rate); 
    // set commission rate 
    commission_rate = 0.02; 
    } 

    public void addSales (double sales) 
    { 
    sales += total_sales; 

    /*???? */super.pay 
    } 

} 

и Ежечасно класс

// ******************************************************************** 
// Hourly.java  Java Foundations 
// 
// Represents an employee that gets paid by the hour 
// ******************************************************************** 

public class Hourly extends Employee 
{ 
    private int hours_worked; 

    // ------------------------------------------------------------------------- 
    // Constructor: Sets up this hourly employee using the specified information 
    // ------------------------------------------------------------------------- 
    public Hourly(String name, String address, String phone, 
       String soc_sec_number, double rate) 
    { 
    super(name, address, phone, soc_sec_number, rate); 
    hours_worked = 0; 
    } 

    // ----------------------------------------------------- 
    // Adds the specified number of hours to this employee's 
    // accumulated hours 
    // ----------------------------------------------------- 
    public void addHours(int more_hours) 
    { 
    hours_worked += more_hours; 
    } 

    // ----------------------------------------------------- 
    // Computes and returns the pay for this hourly employee 
    // ----------------------------------------------------- 
    public double pay() 
    { 
    double payment = pay_rate * hours_worked; 

    hours_worked = 0; 
    return payment; 
    } 

    // ---------------------------------------------------------- 
    // Returns information about this hourly employee as a string 
    // ---------------------------------------------------------- 
    public String toString() 
    { 
    return super.toString() + "\nCurrent hours: " + hours_worked; 
    } 
} 
+0

Уточнитните желаемое поведение. – MikeCAT

+0

Возможно, вам стоит также рассмотреть возможность использования BigDecimal вместо double. – Fildor

+0

В вашем вопросе говорится, что вы «должны переопределять метод оплаты», но в вашем коде вы этого не делаете - почему? Вместо этого вы создаете новый метод 'addSales (...)', который вы вообще не определяете для нас - опять же, почему? –

ответ

0

В классе Commission вы добавляете переопределение pay, как это:

@Override 
public double pay() { 
    double payment = super.pay(); // call the method of the parent 
    ....       // add other code 
} 
+0

Предполагается рассчитать оплату за отработанные часы, а затем добавить к этой сумме комиссию за продажу (общий объем продаж * комиссионные), как бы я это сделал? –