是的,这是一件非常简单的事情,但我并没有找到一个好的共鸣。我知道将变量设为私有并向setter提供getter来访问该变量是一个好习惯。除此之外还有什么理由吗?
答案 0 :(得分:4)
查找“封装”和“信息隐藏”。
基本上,类管理数据并提供对它们的操作/提供对它们的访问,但该数据的内部表示应保持对类的私有。像这样,类可以在不破坏其他代码的情况下更改其内部表示。
E.g。考虑:
A)
public Date date;
B)
private Date date;
public Date getDate(){...}
public setDate(Date date){...}
稍后您选择使用日历而不是日期。 在情况A)中,您无法在不破坏代码的情况下更改数据类型。
如果是B)你可以这样做:
private Calendar calendar;
public Date getDate(){...}
public setDate(Date date){...}
public Calendar getCalendar (){...}
public setCalendar(Calendar calendar){...}
您可以在get / setDate方法中提供转换。客户端代码不会中断。
您有时想要使用getter和setter的另一个原因是使用libraries /
基于JavaBeans模式的框架。
答案 1 :(得分:1)
原因很多。它是一种控制类的内部工作的访问(访问器)的方法。有时,例如,您可能希望getter返回对象或setter的克隆,只是复制私有对象上的值,而不是将处理程序指向传递给setter的新对象。另一个原因是在获取或设置对象之前或之后做某事而不暴露此功能。
总结一下:
仅在需要时使用它们。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果保留变量public,则无法确保对象保持一致状态。例如,在您的安装工中,您可以进行一些检查,例如避免将负数设为年龄。
如果你有公共变量,你可以放弃例如拥有监听器的可能性,因为监听器通常使用通过setter设置变量的通知。直接更改公共变量时,没有机会跟踪更改。
这些是一些非常基本的例子,但可以肯定地找到它们。