Java 使用set方法访问实例字段修饰符的必要性
我正在学习java。现在,在oop中,将类中的字段设置为私有并根据需要提供get和set方法来访问或修改变量一直是一种实践。现在我的问题是,如果您有一个声明为私有的字段的set方法,那么用户仍然可以更改该字段的值,即使它是不可见的。所以,为什么不公开该字段而不是提供一个集合方法呢?尝试阅读有关封装的内容,您将更好地理解其原因。尝试阅读有关封装的内容,您将更好地理解其原因。您是正确的-设置者和获取者可以更改相应属性的值。那么,我们为什么需要它们呢 我将在这里列举一些原因Java 使用set方法访问实例字段修饰符的必要性,java,oop,field,Java,Oop,Field,我正在学习java。现在,在oop中,将类中的字段设置为私有并根据需要提供get和set方法来访问或修改变量一直是一种实践。现在我的问题是,如果您有一个声明为私有的字段的set方法,那么用户仍然可以更改该字段的值,即使它是不可见的。所以,为什么不公开该字段而不是提供一个集合方法呢?尝试阅读有关封装的内容,您将更好地理解其原因。尝试阅读有关封装的内容,您将更好地理解其原因。您是正确的-设置者和获取者可以更改相应属性的值。那么,我们为什么需要它们呢 我将在这里列举一些原因 维护代码更容易。您可以很
- 维护代码更容易。您可以很容易地找到谁更改了属性。只需查找所有Setter调用。否则,您可以搜索所有引用属性的位置,并找到99%的位置是您读取属性的,1%的位置是您写入属性的李>
- 它更容易调试。您可以将断点放在getter或setter中,具体取决于您要查找的内容
- setter和getter都是方法,这一事实在字节码工程和现代复杂框架中的代理创建中得到了应用
- 维护代码更容易。您可以很容易地找到谁更改了属性。只需查找所有Setter调用。否则,您可以搜索所有引用属性的位置,并找到99%的位置是您读取属性的,1%的位置是您写入属性的李>
- 它更容易调试。您可以将断点放在getter或setter中,具体取决于您要查找的内容
- setter和getter都是方法,这一事实在字节码工程和现代复杂框架中的代理创建中得到了应用
void setVar(string x){
myPrivateVar = x;
//log the change..
writeToLog("myPrivateVar was updated to: " + x + " at <blah blah>");
//inform others of the change.
updateDependantConfiguration();
}
void setVar(字符串x){
myPrivateVar=x;
//记录更改。。
WriteLog(“myPrivateVar更新为:“+x+”at”);
//将更改通知其他人。
UpdateDependentConfiguration();
}
嗯
在oop中,将类中的字段设置为私有并根据需要提供get和set方法来访问或修改变量始终是一种实践
变量最好保持私有(尽管可以保持公共)。并非所有变量都需要get和set(accessors和mutators)函数。这取决于用例。例如,如果我持有某种类型的计数,这是类内部的,我不会为它提供set(..)方法。如果您的get(…)和set(…)方法只不过是返回和分配,我建议您遵循公司的编码指南。如果你有选择权,那就选择getter和setter
现在我的问题是,如果您有一个声明为私有的字段的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();
}
void setVar(字符串x){
myPrivateVar=x;
//记录更改。。
WriteLog(“myPrivateVar更新为:“+x+”at”);
//将更改通知其他人。
UpdateDependentConfiguration();
}
嗯