为此VendingMachine类创建构造函数

时间:2016-10-02 19:45:59

标签: java constructor

这是我不理解的最后一部分

到目前为止,VendingMachine类没有任何构造函数。始终构造没有构造函数的类的实例,并将所有实例变量设置为零(如果它们是对象引用,则为null)。提供显式构造函数总是一个好主意。

为VendingMachine类提供两个构造函数:

1)使用10个汽水罐初始化自动售货机的默认构造函数

2)构造函数VendingMachine(int cans),用给定数量的罐初始化自动售货机 两个构造函数都应该将令牌计数初始化为0。

此计划实验室来自:

2.1。在本实验中,您将实现一个装有罐装苏打水的自动售货机。要购买一罐苏打水,客户需要在机器中插入一个令牌。当插入令牌时,罐可从罐储存器落入产品输送槽中。自动售货机可以装满更多的罐头。目标是确定在任何给定时间机器中有多少罐和令牌。

您为VendingMachine课程提供哪些方法?非正式地描述它们。

2.2。现在将这些非正式描述转换为Java方法签名,例如

public void fillUp(int cans)

提供方法的名称,参数和返回类型。不要实现它们。

2.3。这些方法需要做哪些实例变量才能完成工作?提示:您需要跟踪罐头和令牌的数量 用它们的类型和访问修饰符声明它们。

2.4。考虑当用户将令牌插入自动售货机时会发生什么。令牌数量增加,罐头数量减少。实施方法:

public void insertToken() 
{
   // Instructions for updating the token and can counts
}

您需要使用在上一步中定义的实例变量。 不要担心自动售货机中没有罐头的情况。您将在本课程的后面学习如何编写“如果可以计数> 0”的决策。现在,假设如果自动售货机为空,则不会调用insertToken方法。

2.5。现在实现一个方法`fillUp(int cans) 向机器添加更多罐头。只需添加新罐数就可以计算。

2.6。接下来,实现两个方法getCanCount和getTokenCount,它们返回can和token计数的当前值。 (您可能需要查看BankAccount类的getBalance方法以获得指导。)

2.7。您已经实现了VendingMachine类的所有方法。 将它们组合成一个类,如下所示:

public class VendingMachine 
{
    private your first instance variable
    private your second instance variable 
    public your first method
    public your second method
    . . .
}

2.8现在完成以下测试程序,以便它练习您班级的所有方法。

public class VendingMachineTester
{
   public static void main(String[] args)
   {
      VendingMachine machine = new VendingMachine();
      machine.fillUp(10); // Fill up with ten cans
      machine.insertToken();
      machine.insertToken();
      System.out.print("Token count: ");
      System.out.println(machine.getTokenCount());
      System.out.println("Expected: . . .");
      System.out.print("Can count: ");
      System.out.println(machine.getCanCount()); 
      System.out.println("Expected: . . .");
   } 
}

1 个答案:

答案 0 :(得分:1)

有关构造函数的文档,请参阅此链接:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

构造函数只是一个始终是创建对象时调用的第一个方法。因此,变量初始化通常在构造函数中完成。

在你的情况下,它看起来应该是这样的:

public class VendingMachine 
{
    //replace this with whatever variable name you used for the number of cans
    private int numCans;

    //the default constructor
    public VendingMachine() {

        //call the other constructor with the default value, 10
        this(10);
    }

    //the constructor which takes an argument
    VendingMachine(int cans) {

        //set the number of cans equal to the passed argument
        numCans = cans;
    }

    //insert all other methods and fields you already wrote for this class
}