【发布时间】:2012-09-10 11:49:41
【问题描述】:
我正在学习java。现在,将类中的字段设为私有并根据访问或修改变量的要求提供 get 和 set 方法始终是 oop 中的一种做法。现在我的问题是,如果您有一个声明为私有的字段的 set 方法,即使该字段不可见,用户仍然可以更改该字段的值。那么,为什么不将字段公开而不提供 set 方法呢?
【问题讨论】:
我正在学习java。现在,将类中的字段设为私有并根据访问或修改变量的要求提供 get 和 set 方法始终是 oop 中的一种做法。现在我的问题是,如果您有一个声明为私有的字段的 set 方法,即使该字段不可见,用户仍然可以更改该字段的值。那么,为什么不将字段公开而不提供 set 方法呢?
【问题讨论】:
将类中的字段设为私有并根据访问或修改变量的要求提供get和set方法始终是oop中的一种做法。
最好将变量保密(尽管您可以将其公开)。并非所有变量都需要 get 和 set(访问器和修改器)函数。这取决于用例。例如,如果我持有类内部的某种计数,我不会为其提供 set(..) 方法。如果您的 get(..) 和 set(..) 方法只是返回和分配,我建议您遵循公司的编码指南。如果你可以选择 getter 和 setter。
现在我的问题是,如果您有一个声明为私有的字段的 set 方法,那么即使该字段不可见,用户仍然可以更改该字段的值。那么,为什么不公开字段而不是提供 set 方法呢?
这里有一个非常简单/琐碎的例子:
void setVar(string x){
myPrivateVar = x;
//log the change..
writeToLog("myPrivateVar was updated to: " + x + " at <blah blah>");
//inform others of the change.
updateDependantConfiguration();
}
HTH ..
【讨论】:
尝试阅读有关封装的内容,您会更好地理解其中的原因。
【讨论】:
您是对的 - setter 和 getter 可以更改适当属性的值。那么,我们为什么需要它们?
我会在这里尝试列举一些原因。
【讨论】: