0

问题是:

编写包含以下内容的类的定义 Counter

  • 一个名为 counter 类型的实例变量  int 。

  • limit一个名为type  的实例变量  int  。

  • 一个名为的静态  int 变量  nCounters,初始化为 0 。

  • 构造函数采用两个int 参数,将第一个分配给 counter,将第二个分配给 limit。它还将静态变量加一  nCounters

  • 一个名为 的方法  increment  。它不带参数或返回值;如果
    实例变量  counter小于  limit,increment 只是将实例变量加一  counter

  • decrement一个不带参数也不返回值的命名方法  ;如果
    counter大于零,它只是从 中减去 1 counter

  • 一个名为  getValue返回实例变量值的  方法counter

  • 一个名为  getNCounters返回静态变量值的 静态方法
    nCounters

我的困境

该代码工作正常,但我想知道以下内容:

为什么第一个静态私有而第二个是公开的?

我的代码:

public class Counter 
{
    private int counter;
    private int limit;
    private static int nCounters = 0;
    public Counter (int x, int y)
    {
        counter = x;
        limit   = y;
        nCounters++;
    }
    public void increment () 
    {
        if( counter < limit)
        {
            counter++;
        }
    }
    public void decrement () 
    {
        if(counter > 0)
        {
            counter--;
        }
    }
    public int getValue ()
    {
        return counter;
    }
    public static int getNCounters ()
    {
        return nCounters;
    }
}
4

2 回答 2

0

第一个静态变量nCounters是私有的,因为你想在你的类中控制它——你不希望任何外部的代码Counter来修改它。但是您希望能够在 之外读取它的值Counter,因此该getNCounters()方法是公开的。

于 2013-03-14T09:22:36.643 回答
0

nCounters是一个变量,用于计算调用 Class 构造函数的次数。这是static因为不是实例变量而是类变量(其值由该类的所有实例共享)。

nCounter被私有化以封装它。它只能通过名为 的只读方法在类外部访问getNCounters。否则,我可以访问nCounter并直接更改它的值,从而导致创建的类的值不再可靠。

您可以阅读有关封装静态方法和变量的更多信息,以更好地理解您的代码。

于 2013-03-14T09:24:50.370 回答