问题是:
编写包含以下内容的类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;
}
}
答案 0 :(得分:0)
第一个静态变量nCounters
是私有的,因为你想在你的类中控制它 - 你不希望Counter
之外的任何代码修改它。但是您希望能够在Counter
之外读取其值,因此getNCounters()
方法是公开的。
答案 1 :(得分:0)
nCounters
是一个变量,用于计算类构造函数被调用的次数。它是static
因为它不是实例变量而是类变量(它的值由该类的所有实例共享)。
nCounter
是私有的,用于封装它。它只能通过名为getNCounters
的只读方法在类外部访问。否则,我可以访问nCounter
的值并直接更改它,导致创建的类的值不再可靠。
您可以详细了解encapsulation和static methods and variables,以便更好地了解您的代码。