3

我有以下关于电脑商店的作业:

  1. 有几个类包括:显示器、机箱、鼠标、键盘。

  2. 所有的类都有共同的字段:id、name、price、quantity。

  3. 每个类都有一些独特的字段。大多数功能包括:添加、更新、删除、查找、显示列表、保存、加载文件

    - 所以,首先我将创建一个名为 Product 的类,它有 4 个公共字段。以上类将从产品扩展。

    - 然后,我想我可能会创建一个具有字段类型为 ArrayList 的 ComputerStore 类。items 存储所有对象,这些对象是上述 4 个类的实例但我不确定。

    是否合理?我需要一些想法

以前,我总是只对一个类使用 ArrayList 存储,例如

List <String> list = new ArrayList<String>();

现在它们是多类型的。我认为它在Java中是通用的,对吧?

以防万一,我想更新 1 个项目。我必须考虑如何为他们更改信息。例如:鼠标用于某些代码,键盘用于另一个代码。不管怎样,谢谢大家!

4

5 回答 5

4

您的方法是 100% 合理的。

您完全在“泛型”的正确轨道上。首先,在这里查看官方输入链接描述

接下来,只需从现实世界的角度考虑您的数据,就像您已经在做的那样:显示器、机箱、鼠标和键盘都是产品。您的计算机商店的库存是产品列表。

提示:产品列表。

将它与您通过该教程学到的有关泛型的知识结合起来,您就可以开始了。

于 2013-08-17T12:43:09.263 回答
2

您可以使用 java generic。首先创建一个具有超级类类型Product的 java 集合(例如:List) 。现在您可以在扩展类Product的集合(列表)中添加任何子类(监视器键盘等) 。

public class Product{

}
public class Monitor extends Product{

}

public class Keyboard extends Product{

}

List<Product> products = new ArrayList<Product>();
products.add(new Monitor());
products.add(new Keyboard());
于 2013-08-17T12:40:28.270 回答
1

由于您有一个超类(产品),您可以将列表的类型设置为产品,即

List<Product> list = new ArrayList<Product>();
list.add(new Mouse());
list.add(new Keyboard());

它允许你在不关心类的情况下迭代它们并列出它们的名称和价格,但是如果你打算从列表中取出一个项目,你需要检查它的实际类型(取决于你用它做什么)。

于 2013-08-17T12:40:47.113 回答
0

你可以像下面这样

import java.util.List;
import java.util.ArrayList;

class Test{
public static void main(String... args){
    List<MultiObj> multiObjs = new ArrayList();

    MultiObj ob = new MultiObj(); multiObjs.add(ob);
    ResX xOb = new ResX(); multiObjs.add(xOb);
    ResY yOb = new ResY(); multiObjs.add(yOb);
    ResZ zOb = new ResZ(); multiObjs.add(zOb);

    for (int i = 0; i < multiObjs.size(); i++ ) {
        System.out.println(multiObjs.get(i).getV());
    }
    System.out.println("Waoo its working");
 }
}
class MultiObj{
public String greet(){
    return "Hello World";
}
public String getV(){
    return "Hello World";
 }
}
class ResX extends MultiObj{
String x = "ResX";
public String getX(){
    return x;
}
public String getV(){
    return x;
 }
}
class ResY extends MultiObj{
String y = "ResY";
public String getY(){
    return y;
}
public String getV(){
    return y;
 }
}
class ResZ extends MultiObj{
String z = "ResZ";
public String getZ(){
    return z;
}
public String getV(){
    return z;
 }
}
于 2018-02-10T07:47:45.757 回答
-4

你可以这样做:

public class Item {

public Item(int id, string name, float price, int amount, int ArrayID) {
if (ArrayID == 1) { 
ID1 = id;
name1 = name;
price1 = price;
amount1 = amount;
}
if (ArrayID == 2) { 
ID2 = id;
name2 = name;
price2 = price;
amount2 = amount;
}
if (ArrayID == 3) { 
ID3 = id;
name3 = name;
price3 = price;
amount3 = amount;
}
if (ArrayID == 4) { 
ID4 = id;
name4 = name;
price4 = price;
amount4 = amount;
}

}

//ArrayID #1
public static int ID1;
public static String name1;
public static float price1;
public static int amount1;

//ArrayID #2
public static int ID2;
public static String name2;
public static float price2;
public static int amount2;

//ArrayID #3
public static int ID3;
public static String name3;
public static float price3;
public static int amount3;

//ArrayID #4
public static int ID4;
public static String name4;
public static float price4;
public static int amount4;


public static int[] id = ID1, ID2 ID3, ID4;
//so forth...
}
于 2013-08-17T12:44:02.847 回答