在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));
}
}
}
}
答案 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);
}