プロが教える店舗&オフィスのセキュリティ対策術

買い物かごクラスのプログラムを作っています。
このソースはフィールドにListを持たせているのですが、ArrayList を継承
してCartクラスを作りたいです。そうすることで、CartクラスのaddItem()
メソッドやremoveItem()メソッドはmainでメソッドを呼び出せば良いため、
不要になると思うのですが、合計金額を求めるときに、どのように商品値段
を参照していいのかわかりません。

また、ArrayList を継承する場合、public class Cart extends ArrayList
という書き方で良いのでしょうか?



public class Cart {

List<Item> itemList = new ArrayList<Item>();

public ShoppingCart(){}

//商品をカートに追加
public void addItem(Item item){
itemList.add(item);
}


//カート内に入っている商品の合計金額を返却
public int getTotalPrice(){
int total=0;

for(int i=0;i<getItemSize();i++){
total+=itemList.get(i).getPrice();
}
return total;
}

//リストの指定された位置にある要素を削除
public void removeItem(int index){
itemList.remove(index);
}
}

A 回答 (2件)

既に指摘されていますが継承は「is a」関係の時に用いるものです。

「has a」では使わないほうがいいと思います。
これはC#かJavaに関わらずオブジェクト指向プログラミングの基本です。

「買い物かごはリストである」のか「買い物かごをリストを使って実装する」かの違いです。
    • good
    • 0

itemList がthis になるだけじゃないですか?



継承する事でアクセサメソッドを省けるという事ですが、それがどれほど効率的なのかエレガントなのか、微妙ですけどね。

まぁでも、なんでもやってみるのは良い事でしょう。

C#にすっかり毒された私は、今となってはできる限り継承は使わないというスタンスですが・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!