Как переопределить метод в подклассе? - PullRequest
1 голос
/ 07 марта 2011

У меня есть программа инвентаризации, написанная для включения массива и метода для расчета общей стоимости всех введенных элементов инвентаря.Теперь я должен включить подкласс, который переопределяет оригинал, чтобы включить «одну уникальную особенность».Я создал новый файл с именем ItemDetails для настройки подклассов исходного Item.Мне нужно включить одну уникальную особенность, рассчитать стоимость инвентаря и рассчитать 5% от стоимости пополнения запасов в этом подклассе.Должен ли я просто перенести некоторые соответствующие строки в другой класс?Или я пишу код дважды?Я не знаю, что делать дальше.Любая помощь полезна.Благодарю.Это то, что у меня пока есть:

package inventory3;

public class ItemDetails extends Items
{
public static void override()
    {
    private String Name;
    private double pNumber, Units, Price;

public ItemDetails()
        {
        }
    }
}

Это файл класса Item, который он должен переопределить:

package inventory3;

import java.lang.Comparable;                

    public class Items implements Comparable
{
       private String Name;
       private double pNumber, Units, Price;

public Items()
    {
Name = "";
pNumber = 0.0;
Units = 0.0;
Price = 0.0;
    }

public int compareTo(Object item)
    {

  Items tmp = (Items) item;


    return this.getName().compareTo(tmp.getName());
    } 


public Items(String productName, double productNumber, double unitsInStock, double unitPrice)
    {
    Name = productName;
    pNumber = productNumber;
    Units = unitsInStock;
    Price = unitPrice;
    }
    //setter methods
public void setName(String n)
    {
    Name = n;
    }

public void setpNumber(double no)
    {
    pNumber = no;
    }

public void setUnits(double u)
    {
    Units = u;
    }

public void setPrice(double p)
    {
    Price = p;
    }

//getter methods
public String getName()
    {
return Name;
    }

public double getpNumber()
    {
return pNumber;
    }

public double getUnits()
    {
return Units;
    }

public double getPrice()
    {
return Price;
    }

public double calculateTotalPrice()
    {
    return (Units * Price);
    }

public static double getCombinedCost(Items[] item)          
    {
    double combined = 0;        

    for(int i =0; i < item.length; ++i)
        {
        combined = combined + item[i].calculateTotalPrice();        

        } 
    return combined;
    }

}

1 Ответ

5 голосов
/ 07 марта 2011

Вы просто объявляете метод с той же сигнатурой, что и метод в родительском классе.Так что ваш будет выглядеть так:

package inventory3;

public class ItemDetails extends Items {
    private String Name;
    private double pNumber, Units, Price;

    public ItemDetails(String Name, double pNumber, double Units, double Price) {
        this.Name = Name;
        this.pNumber = pNumber;
        this.Units = Units;
        this.Price = Price;
    }

    // getters and setters....

    // The @Override is optional, but recommended.
    @Override
    public double calculateTotalPrice() {
        return Units * Price * 1.05; // From my understanding this is what you want to do
    }
}
...