例如,静态公共和私有访问

时间:2013-03-14 09:02:13

标签: java oop

问题是:

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

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

  • 类型为limit的名为int的实例变量。

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

  • 一个构造函数,它接受两个int个参数,将第一个参数赋给counter和 第二个到limit。它还为静态变量nCounters添加了一个。

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

  • 名为decrement的方法,它也不接受参数或返回值;如果
    counter大于零,它只是从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;
    }
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

您可以详细了解encapsulationstatic methods and variables,以便更好地了解您的代码。