我有一个名为Chef的类,其中有三个构造函数。就像这样:
public Chef(String chefName, double noodleStock) {
this.chefName = chefName;
this.noodleStock = noodleStock;
this.bowlsCooked = 0;
}
public Chef(String chefName, double noodleStock, double vegStock) {
this.chefName = chefName;
this.noodleStock = noodleStock;
this.vegStock = vegStock;
this.bowlsCooked = 0;
}
public Chef(String chefName, double noodleStock, double vegStock,
double porkStock) {
this.chefName = chefName;
this.noodleStock = noodleStock;
this.vegStock = vegStock;
this.porkStock = porkStock;
this.bowlsCooked = 0;
}
在一个为每个厨师储存的方法中,我需要setNoodleStock
,例如,通过在当前库存中添加一个值。
如何确保引用正确的厨师?每个厨师之间的唯一区别将是他们的名字和他们的构造函数中的args数量。
答案 0 :(得分:0)
通过跟踪它们,你知道正确的厨师。
Chef chef1 = new Chef(...);
Chef chef2 = new Chef(...);
Chef chef3 = new Chef(...);
与您使用的构造函数无关。然后将库存添加到chef2,您可以使用
chef2.addNoodleStock(amount);
当然,你必须编写方法addNoodleStock()。
答案 1 :(得分:0)
假设您在Chef类中定义了setNoodleStock()
方法,即
public class Chef {
... instance variables ...
public Chef(String chefName, double noodleStock) {
...
}
public Chef(String chefName, double noodleStock, double vegStock) {
...
}
public Chef(String chefName, double noodleStock, double vegStock,
double porkStock) {
...
}
public void setNoodleStock(double stock) {
this.noodleStock = stock;
}
}
稍后,当您创建Chef
个对象时,无论您调用哪个setNoodleStock()
,都会设置其库存:
Chef chef1 = new Chef("First Chef", 2.0);
Chef chef2 = new Chef("Second Chef", 1.0);
chef1.setNoodleStock(4.0); // chef1 now has 4.0 noodles, chef2 still has 1.0
chef2.setNoodleStock(5.0); // chef1 has 4.0 noodles from above, chef2 now has 5.0
答案 2 :(得分:0)
如何确保引用正确的厨师?
如果你实际上有一个Chef
实例的引用,那就完成了。使用不同的构造函数不会改变Chef
实例的任何内容。
如果您需要Chef
引用String name
,那么您可能应该使用Map<String, Chef>
。
Chef joe = new Chef("joe", 0);
Map<String, Chef> chefs = new HashMap<String, Chef>();
chefs.put(joe.getName(), joe);
其他地方......
Chef joe = chefs.get("joe");
但是,在那时,为什么不直接使用已经用名称声明的Chef joe
实例?