从一个类中调用一个方法,该类是我已经创建了一个ArrayList的类的子类

时间:2014-10-29 11:16:31

标签: java arraylist

我最后附上了代码。

所以我有一个名为Product,ComputerPart和Ram的课程。 Ram扩展了Computer部分,ComputerPart扩展了产品,所有类都覆盖了price属性,因为Product是一个抽象类。

我的ArrayList与List的实现是否正确? 如何通过arraylist在ComputerParts类中获取getter方法。 当我通过计算机部件传递76f时,我有点困惑,它是如何可用的,因为它没有正确实现

abstract class Product {
    protected float price;
    public static int i =0;                   // to keep count starts at zero 
    protected static int ID ;               // to update and keep track of ID even if i changes 

     // return the price of a particular product
    abstract float price();
}


class ComputerPart extends Product {

     public ComputerPart(float p) {
        i += 1;                             // each time constructor invoked ,  
        ID = i ;                                // to update ID even if i changes.    
        price = p;
    }

    public float price() { return price; }

    public static String getID(){   // a getter method so ID can be nicely formated and returned
        String Identification =  "ID#" + ID;
        return Identification;
    }
}

public abstract class GenericOrder {

    public static void main(String[] args) {

        ArrayList<Product> genericOrder= new ArrayList<Product>();
        genericOrder.add(new ComputerPart(76f));
    }
}

1 个答案:

答案 0 :(得分:1)

ArrayList<Product> genericOrder= new ArrayList<Product>();

这很好,但最好将变量类型声明为List接口(这使得代码更加模块化,因为您可以轻松切换到不同的List实现):

List<Product> genericOrder= new ArrayList<Product>();

至于访问列表中存储的对象的特定属性:

您可以从列表中获取产品:

Product p = genericOrder.get(0);

然后,您可以检查它是否为ComputerPart并投放它以便访问ComputerPart的具体方法:

if (p instanceof ComputerPart) {
    ComputerPart c = (ComputerPart) p;
    System.out.prinln(c.price());
}