Account newAccount = new Account(name);
newAccount.addNewProduct();
这是Account中的构造函数代码和属性:
private final int MAX_PRODUCTS = 50; //Assumes no more than 50 products per customer
private String name; //Name of the customer
private int sum; //Sum amount of the purchase
private Product[] productList; //List of products for a customer
private int productCounter; //Counter for number of products
public Account(String name)
{
Product[] productList = new Product[MAX_PRODUCTS]; //New empty list of products of the customer }
productCounter = 0;
sum = 0;
name = name;
}
我无法理解为什么,但在这种方法中:
public void addNewProduct()
{
System.out.println("Name is: " + this.name);
productList[productCounter] = new Product();
productCounter++;
}
虽然我在控制台中输入了一个名字,但它将名称打印为null ... 它就像没有保存我创建的对象newAccount的属性。为什么呢?
答案 0 :(得分:5)
name = name
无效。您需要使用this.name = name
这是因为当你使用name
时,你会引用构造函数中的参数;当您使用this.name
时,请参阅该字段。
答案 1 :(得分:0)
正如Anubian Noob所说:
name = name不起作用,因为你要为同一个变量分配相同的值。
如果您收到姓名=" John",您正在做什么:
John = John。
这就是你需要使用它的原因,当你使用this.name = name时,你将接收到的值传递给你班级的局部变量。
所以如果你有这个:
private final int MAX_PRODUCTS = 50; //Assumes no more than 50 products per customer
private String name; //Name of the customer
private int sum; //Sum amount of the purchase
private Product[] productList; //List of products for a customer
private int productCounter; //Counter for number of products
public Account(String name)
{
Product[] productList = new Product[MAX_PRODUCTS];
productCounter = 0;
sum = 0;
this.name = name;
}
您的值将存储在名为name的私有变量中。