多个对象到数组

时间:2013-02-12 12:03:14

标签: java arrays object methods arraylist

我目前正在制作一个简单的网上商店应用程序。网上商店需要将三种物品添加到购物车中。 CD,书或游戏。我为每个都有toString()方法的对象创建了一个类。

现在我必须创建一个方法add(..),它需要将指定的对象添加到名为shoppingcart的ArrayList中。需要在Webshop类中调用此方法,该类本身具有创建的对象。

我知道如何使用多个添加方法执行此操作,但需要使用单个方法执行此操作。

5 个答案:

答案 0 :(得分:4)

您可能希望创建一个名为AbstractItem的新类型,并且所有其他类型都会从此扩展。将这个抽象类隐藏在接口后面也是一种很好的做法。因此,AbstraxtItem类可以实现一个定义公共API的Item接口。

AbstractItem类将定义其子类型应实现的一些抽象方法,如getPrice(),以及可能是所有子类的常见行为的其他具体方法。购物车将是ArrayList<Item>,将由add(Item)方法填充。

答案 1 :(得分:3)

您商店中可以添加的每个对象都应实现interface IProduct. 然后,您有一个IP产品列表,您可以添加。

ArrayList<IProduct> shoppingBasket = new ArrayList<IProduct>();

答案 2 :(得分:1)

你可以让课程CD,书籍和游戏实现Interface,例如ShopObject。 然后你可以让你的shoppinCart像这样:

ArrayList<ShopObject> shoppingCart = new ArrayList<ShopObject>();

答案 3 :(得分:1)

OOP 可以帮助您解决此问题:

  1. 如果您发现CD, Book or Game有一些常见的属性,那么您可以使用具有共同功能的Base类,并让所有这些扩展该类。

    因此,CD, Book and Game扩展了一个类产品,并提供了一个以Product为参数的通用添加方法。

    添加(产品);

  2. 如果CD, Book and Game 共享任何常见功能,那么您也可以使用OOP功能以更简单的方式添加所有这些功能;但在这里你需要使用方法重载

    添加(CD cd);

    添加(图书);

  3. 因此建议,考虑一下您的应用程序设计,然后调用其中一种方法。

答案 4 :(得分:0)

您可以使用判别式聚合所有对象,以指示哪个对象真正被表示,就像Ada中的变体记录或C中的联合一样。

您在此处有一个完整的示例:http://lambda-the-ultimate.org/node/2694#comment-40453