在哪里实例化对象?

时间:2020-03-28 16:42:10

标签: java oop

我有一个抽象类Products,其中有两个子类MouseKeyboard

我的文件处理程序从数据库读取属性,并确定我们要实例化的对象。

子类首先调用超类来处理mousekeyboard通用的验证方法,然后子类处理唯一的验证。我希望无论如何,子类中的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);
            }
        }
    }

0 个答案:

没有答案