所以我试图从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;
}
}
答案 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实例。