2016-05-02 118 views
0

我有一個Item類和2類擴展名爲CountableItemUncountableItem這個類。Java繼承

CountableItem有一個實例變量名爲quantityUncountableItem類有一個名爲weight的實例變量。

他們的構造就像

public CountableItem(int id, String name, double unitPrice, Date experitionDate,int quantity) { 
super(id, name, unitPrice, experitionDate); 
setQuantity(quantity); 
} 

public UncountableItem(int id, String name, double unitPrice, Date experitionDate,double weight) { 
super(id, name, unitPrice, experitionDate); 
setWeight(weight); 
} 

而在另一個類我認爲在ArrayList

private ArrayList<Item> storeList = new ArrayList<>(); 

項在主類用戶進入多少還是多少他想買。 但我無法更改數量或重量,因爲我的數組列表持有物品。 請幫助:(

+1

請發佈一個[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve) 。 – MikeCAT

+0

我不明白你的問題/你想完成什麼 –

+1

很難理解你要問什麼,但你應該能夠檢查'if(item instanceof UncountableItem)'。 –

回答

0

你可以使用instanceof運算符來找出你有哪種類型的項目。但是,這是不是很大OOD。

另一種方法是有點棘手,因爲你想設置一個雙一在一個web場景中,我假設你將值作爲一個字符串,所以Item可以是抽象的,並且有一個抽象的setCountOrWeight(String s),然後這個子類會覆蓋它用他們自己的setCountOrWeight(String s)方法知道如何解析和設置正確的數據類型