2011-03-07 142 views
1

我有一個庫存程序編寫來包含一個數組和一個方法來計算輸入的所有庫存項目的總成本。我現在必須包含一個覆蓋原始的子類,以包含「一個獨特的功能」。我創建了一個名爲ItemDetails的新文件,以便爲原始Item的子類進行設置。我需要包含一個獨特的功能,並計算庫存的價值,並計算此子類中5%的補貨費用。我只是將一些相關的線路轉移到另一個班級?或者我寫了兩次代碼?我不知道下一步該怎麼做。任何幫助都很有用。謝謝。這是我到目前爲止有:如何覆蓋子類中的方法?

package inventory3; 

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

public ItemDetails() 
     { 
     } 
    } 
} 

這是它應該覆蓋項目類文件:

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

} 
+0

查覈在[此帖]例子(http://www.javatutorialhub.com/java-tutorials.html)。 – 2011-03-07 03:48:09

回答

5

只需聲明的方法具有相同簽名作爲父母的方法類。所以,你會是什麼樣子:

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 
    } 
} 
+0

謝謝。這很有幫助。如果沒有@override,我會怎麼實現呢?我如何在我的主文件中調用這個? – g3n3rallyl0st 2011-03-07 04:05:01

+0

@ g3n3rally:那麼,你可以放棄'@ Override',你會沒事的。但是,如果您將它留在那裏,Java編譯器可以爲您提供額外的幫助。要從主文件中調用它,你可以簡單地創建一個'ItemDetails'類的新實例並調用你想要的方法。 – 2011-03-07 04:09:16