无法从继承中找到匹配项

时间:2014-05-25 18:33:38

标签: java inheritance

在java中我有一个问题。

我有产品类和电视类。电视类继承自Product。我也有Store Class。

产品类有变量和自己的findMatch方法, TV类有自己的变量和自己的findMatch方法, Store类有ArrayList和findProduct方法

在驱动程序类中,我添加了一些产品,创建对象并将它们添加到ArrayList。它发现,如果attributues属于TV类,请尝试使用findMatch方法。但是我想要找到的属性是在Product类(例如品牌)中找不到它。 这些代码有什么问题,我无法解决。

public class Product
{

    private String barcode;
    private String brand;
    private String manufactureYear;
    private int price;
    private int yearOfGuarantee;
    private int displaySize;


    //constructor and set & get methods here


    public boolean findMatch(String keyword)
    {
        return getBarcode().equals(keyword) ||
                        getBrand().equals(keyword) ||
            getManufactureYear().equals(keyword)
                     || Integer.toString(getPrice()).equals(keyword)
             || Integer.toString(getYearOfGuarantee()).equals(keyword)
                     ||Integer.toString(getDisplaySize()).equals(keyword);  
    }   
}



public class TV extends Product
{

    private String type;
    private String resolution;


    //constructor and set&get methods here

    public boolean findMatch(String keyword)
    {
        super.findMatch(keyword);
        return getType().equals(keyword) || getResolution().equals(keyword);
    }
}


public class Store 
{

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


    public void findProduct(String keyword)
    {
        for(int i=0; i<pList.size(); i++)
        {
            if(pList.get(i).findMatch(keyword)==true)
            {
                System.out.println(pList.get(i));
            }
        }
    }

}

1 个答案:

答案 0 :(得分:1)

TV findMatch方法中,您调用方法的父版本,但对返回的值不执行任何操作:

public boolean findMatch(String keyword)
{
    super.findMatch(keyword);
    return getType().equals(keyword) || getResolution().equals(keyword);
}

您可能需要以下内容:

public boolean findMatch(String keyword)
{
    return super.findMatch(keyword) || getType().equals(keyword) || getResolution().equals(keyword);
}