【发布时间】:2016-12-03 16:45:54
【问题描述】:
【问题讨论】:
-
你为什么不试试呢?
标签: java class oop netbeans encapsulation
【问题讨论】:
标签: java class oop netbeans encapsulation
封装的重点是,您可以为变量如何更新提供明确的算法。例如,如果您只允许其他类直接更新变量:
var1 = 123;
...那么您会遇到其他类只能更新您的类的变量而无法控制分配的值或是否应该更新任何其他变量作为更新该变量的结果。
但是,如果您将变量声明为 private 并为变量的值提供 public 访问器以访问 get 和 set,那么您可以最终控制这些变量的更新方式。
例如,您可能有两个相互关联的变量。如果一个变量被更新,那么另一个变量也应该被更新。也许你有两个变量,var1 和 var2(当然,两者都声明了private,所以没有其他类可以直接访问它们)。也许var2 应该总是比var1 的值多5 的总和。因此,当var1 更新时,使用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你。
【讨论】:
基本上,如果您勾选该列,NetBeans 会将声明变量的所有访问级别设置为私有。
详细了解访问级别 here。
【讨论】: