创建对象尝试测试代码时出错

时间:2017-11-10 15:19:51

标签: java object

所以我试图从InventoryTrackerInterface(main)类中的Item类测试我的代码,但是当我尝试创建对象时,它会产生错误。我认为这是因为名为Item()的私有方法,我将如何解决此问题?我是Java的新手,所以请保持简单,谢谢! :)

public class InventoryTrackerInterface {

    public static void main(String args[]) {

        Item test = new Item(); // error here

        test.getName();

   }

}

public class Item {

    private String name;
    private int quantity;
    private double price;
    private String upc;


    private Item() {

    }

    public Item(String name, int quantity, double price, String upc) {

    }

    public String getName() {
    return name;
    }

    public int getQuantity() {
        return quantity;
    }

    public double getPrice() {
        return price;
    }

    public String getUPC() {
        return upc;
    }
}

2 个答案:

答案 0 :(得分:1)

private Item() {

    }

将其更改为公开

public Item() {

    }

答案 1 :(得分:1)

该方法称为constructor。通过new关键字创建对象时会调用它。 private关键字是access modifier。在您的班级中,您有一个公共构造函数public Item(String name, int quantity, double price, String upc),可以使用Item test = new Item("test", 0,0,"upc");来调用它。

正如您在访问控制文档中看到的那样,如果访问修饰符是私有的,则只能从类本身内调用方法/构造函数。 您可以将该构造函数设置为public,但是根据您的类定义它并不是很有用。您有4个私有字段,没有任何设置方法,因此如果您将Item()公开,您可以创建一个实例,但您永远不能设置其字段。另一方面,构造函数public Item(String name, int quantity, double price, String upc)不包含任何代码。通常你会像这样初始化那里的字段:

public Item(String name, int quantity, double price, String upc) {
    this.name = name;
    this.quantity = quantity;
    this.price = price;
    this.upc = upc;
}

然后,您将使用适当的值调用该构造函数以获取有意义的Item实例。