Java 示例中的静态公共和私有访问
问题是: 编写包含以下内容的类Java 示例中的静态公共和私有访问,java,oop,Java,Oop,问题是: 编写包含以下内容的类计数器的定义: 名为counter的实例变量 类型为int 类型为int的名为limit的实例变量 名为nCounters的静态int变量,初始化为0 采用两个int参数的构造函数,将第一个参数分配给计数器和 第二个是限制。它还向静态变量nCounters添加一个 名为increment的方法。它不接受参数或返回值;如果 实例变量计数器小于限制,增量只向 实例变量计数器 名为递减的方法,也不接受参数或返回值;如果 计数器大于零,它只需从计数器中减去一即可 名为ge
计数器的定义:
- 名为counter的实例变量
类型为
int
- 类型为
int
的名为limit
的实例变量
- 名为
nCounters
的静态int
变量,初始化为0
- 采用两个
int
参数的构造函数,将第一个参数分配给计数器
和
第二个是限制
。它还向静态变量nCounters
添加一个
- 名为
increment
的方法。它不接受参数或返回值;如果
实例变量计数器
小于限制
,增量只向
实例变量计数器
- 名为
递减
的方法,也不接受参数或返回值;如果
计数器
大于零,它只需从计数器
中减去一即可
- 名为
getValue
的方法,返回实例变量计数器的值
- 名为
getNCounters
的静态方法,返回静态变量的值
n计数器
我的困境
代码工作正常,但我想知道以下内容:
为什么第一个静态文件是私有的,第二个是公共的?
我的代码:
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;
}
}
公共类计数器
{
专用int计数器;
私有整数限制;
专用静态整数计数器=0;
公共计数器(整数x,整数y)
{
计数器=x;
极限=y;
nCounters++;
}
公共空间增量()
{
if(计数器<极限)
{
计数器++;
}
}
公共空间递减率()
{
如果(计数器>0)
{
计数器--;
}
}
公共int getValue()
{
返回计数器;
}
公共静态int getNCounters()
{
返回计数器;
}
}
第一个静态变量nCounters
是私有的,因为您想在类中控制它-您不想让计数器
之外的任何代码修改它。但是您希望能够在计数器
之外读取其值,因此getNCounters()
方法是公共的。nCounters
是一个变量,用于计算调用类构造函数的次数。它是静态的,因为它不是一个实例变量,而是一个类变量(它的值由该类的所有实例共享)
nCounter
专用于封装它。只能通过名为getNCounters
的只读方法在类外访问它。否则,我可以访问nCounter
的值并直接更改它,从而导致创建的类的值不再可靠
您可以阅读更多关于代码的内容并更好地理解代码。请您编辑您的问题,使其具有可读性(包括代码!)。我希望这会有所帮助-该网站不允许我发布,因为我在turings craft中有它。谢谢你的帮助。在看了你之前的问题后,我将其重新标记为java,如果我错了,请你自己更正。您应该始终在问题标签堆栈溢出中指定编程语言,这绝不是一个仅限Java的论坛。这是一个很好的例子,说明每个人都会覆盖彼此的编辑,从而导致一些混乱。但希望它现在稳定下来。@lvaroG.Vicario-我试图将它标记为java,但网站说我没有足够的声誉。那有什么更好的选择呢?太好了。现在有道理了。你说的@Averroes是什么意思?用箭头向上投票选出有用的答案,用复选框接受你问题的有效答案。