我有一个抽象类Products
,其中有两个子类Mouse
,Keyboard
。
我的文件处理程序从数据库读取属性,并确定我们要实例化的对象。
子类首先调用超类来处理mouse
和keyboard
通用的验证方法,然后子类处理唯一的验证。我希望无论如何,子类中的super()
调用之后代码是否继续?
我看到的潜在问题是,我需要在我认为不理想的文件处理程序类中声明和实例化该对象,因为我想在子类mouse
或以下实例化该对象keyboard
,但Java要我在文件处理程序中实例化以调用Mouse(String attribute1, ...)
abstract class Products
{
protected String barcode;
protected String brand;
protected boolean wireless;
protected int quantity;
protected double originalCost;
protected double retailCost;
//Setters that are common to both mouse and keyboard objects
protected Products(String barcode, String brand, String wireless, String quantity, String originalCost, String retailCost)
{
//set barcode
if(barcode.length() == 6 && barcode.matches("^[0-9]*$"))
{
this.barcode = barcode;
}
else
{
System.out.println("Invalid barcode attribute");
}
//ect ect for other attributes
}
public class Keyboard extends Products
{
String productType;
String layoutType;
public Keyboard(String barcode, String brand, String wireless, String quantity, String originalCost, String retailCost, String productType, String layoutType)
{
//call super
super(barcode, brand, wireless, quantity, originalCost, retailCost);
//validate productType and assign values ect ect
}
}
public void readFile()
{
while(x.hasNext())
{
String barcode = x.next();
String name = x.next();
String type = x.next();
String brand = x.next();
String colour = x.next();
String connectivity = x.next();
String quantity = x.next();
String originalCost = x.next();
String retailCost = x.next();
String additionalInfo = x.next();
switch(name)
{
case "keyboard":
Keyboard(barcode, brand, connectivity, quantity, originalCost, retailCost, type, additionalInfo);
}
}
}