在Netbeans中创建类时封装字段

问题描述 投票:-1回答:2

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

enter image description here

java class oop netbeans encapsulation
2个回答
0
投票

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

var1 = 123;

...然后你就会被那些能够更新你的类变量的其他类所困,而不能控制分配的值,或者是否因为该变量被更新而应该更新任何其他变量。

但是如果你将变量声明为private并为publicget提供set访问器的变量值,那么你可以最终控制这些变量的更新方式。

例如,您可能有两个彼此相关的变量。如果更新了一个变量,那么另一个变量也应该更新。也许你有两个变量,var1var2(当然,它们都声明为private,所以没有其他类可以直接访问它们)。也许var2应该总是比var1的值多5。因此,当更新var1时,使用setter(封装)可以强制执行此要求:

void setVar1(int val) {
    var1 = val;
    var2 = val + 5;
}

反之,设置field2field1中减去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。

你可以learn more about encapsulation here


0
投票

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

阅读更多关于访问级别here的信息。

© www.soinside.com 2019 - 2024. All rights reserved.