在Netbeans中创建类时封装字段

时间:2016-07-29 05:01:42

标签: java class oop netbeans encapsulation

如果我们提供ENCAPSULATE FIELDS会产生什么影响?如果我们不提供ENCAPSULATE FILEDS会有什么影响

enter image description here

2 个答案:

答案 0 :(得分:0)

封装的目的是为了提供变量如何更新的显式算法。例如,如果您只允许其他类直接更新变量:

var1 = 123;

...然后你就会被那些能够更新你的课程的其他课程所困扰。变量无法控制分配的值,或者是否应该更新该变量的任何其他变量。

但是,如果您将变量声明为private并为public提供get访问者,并提供set您的变量'值,然后您可以最终控制这些变量的更新方式。

例如,您可能有两个彼此相关的变量。如果更新了一个变量,那么另一个变量也应该更新。也许您有两个变量var1var2(当然都声明为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你。

你可以learn more about encapsulation here

答案 1 :(得分:0)

基本上,如果您选中该列,NetBeans会将所有已声明变量的访问级别设置为私有

详细了解访问级别 here