答案 0 :(得分:0)
封装的目的是为了提供变量如何更新的显式算法。例如,如果您只允许其他类直接更新变量:
var1 = 123;
...然后你就会被那些能够更新你的课程的其他课程所困扰。变量无法控制分配的值,或者是否应该更新该变量的任何其他变量。
但是,如果您将变量声明为private
并为public
提供get
访问者,并提供set
您的变量'值,然后您可以最终控制这些变量的更新方式。
例如,您可能有两个彼此相关的变量。如果更新了一个变量,那么另一个变量也应该更新。也许您有两个变量var1
和var2
(当然都声明为private
,所以没有其他类可以直接访问它们)。也许var2
应该总是比var1
的值多5倍。因此,当更新var
1时,使用setter
(封装)可以强制执行此要求:
void setVar1(int val) {
var1 = val;
var2 = val + 5;
}
相反,设置field2
会从field1
中减去5:
void setVar2(int val) {
var2 = val;
var1 = val - 5;
}
您还可以将这些变量的值约束为特定的值范围,例如从10到200(无论出于何种原因)。您可以检查传递给setter的值,并抛出异常IllegalArgumentException
,并附带一条异常消息,说明违反了哪些规则:Value of var1 must be >= 5 <= 200
。
这只是一个简单的例子,说明为什么封装是好并且应该在编写Java代码(或任何OOP类型语言)时实践,以及为什么大多数IDE会自动生成这些setter和getter for你。
答案 1 :(得分:0)
基本上,如果您选中该列,NetBeans会将所有已声明变量的访问级别设置为私有。
详细了解访问级别 here。