private的一些小疑问

timi先生
全栈领域新星创作者
2020-08-01 11:01:19
private总所周知是可见性修饰词中最严格的一个,被他修饰的方法、变量都只能在本类中可见。
然后就有一个小疑问,getters 和 setters方法是不是使用后可以让别的类或包访问和修改被private修饰的语句。
如果这样的话那private和getters、setters同时使用的意义是什么?
如果不是那private修饰的语句中getters、setters的作用又是什么?
望解答!!
...全文
4884 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-08-04
  • 打赏
  • 举报
回复
而且private 的作用就是限制其他人在程序中直接对类变量进行赋值,因为项目中的程序是很多的,如果直接赋值一旦数据变化时,后期维护是相当困难的,你可能需要一个程序一个程序来查找是否用到该类变量并进行修改,而有set和get的话维护起来就很方便了。
qq_39936465 2020-08-04
  • 打赏
  • 举报
回复
引用 楼主 任何时候努力都不会迟 的回复:
private总所周知是可见性修饰词中最严格的一个,被他修饰的方法、变量都只能在本类中可见。 然后就有一个小疑问,getters 和 setters方法是不是使用后可以让别的类或包访问和修改被private修饰的语句。 如果这样的话那private和getters、setters同时使用的意义是什么? 如果不是那private修饰的语句中getters、setters的作用又是什么? 望解答!!
我觉得get和set最主要的作用用在解耦,如果只是简单的赋值的话,get和set作用可能不明显,但是当赋值需要经过计算公式才能的到的情况下,设置get和set这里作用就很突出。例如:在财务税率计算的时候,而当税率变化时,如果我们有set和get方法,我们只要修改set和get方法,几乎不会对其他的程序造成影响。如果没有get和set方法,那么我们就要把所有对该类变量赋值的程序都要做相应的修改。
CS_草祭先生 2020-08-03
  • 打赏
  • 举报
回复
你所理解的getter、setter应该只是最基础的设置和获取值。 其实一般的项目中,大部分都只用到了这个最基本的用处,但真正功能强大的getter、setter并不是你所理解的功能这么简答的用处。 在getter、setter中还可以做很多事情,需要根据你的业务需求在进行编码工作。 比如一个类中,有一个private的int类型属性x,按你的理解给它set值为1,是不是get值就是1?但如果在set方法里,返回传入值-1,那返回就是0。 所以getter、setter功能很强大,并不一定是所见即所得。往往我们在用的时候,只要在乎用它能得到什么结果,而并不在乎它内部是怎么实现的。
rumlee 2020-08-03
  • 打赏
  • 举报
回复
可以看看面向对象的封装
qybao 2020-08-02
  • 打赏
  • 举报
回复
getter和setter的作用基本就像你所理解的,提供接口让其他类访问private属性。 意义就是不要直接暴露private属性,而是暴露接口来访问属性,因为接口灵活,比如你可以在getter返回属性的拷贝(不是直接返回属性本身),在setter里做些验证数据(不让属性被非法数据破坏),直接暴露属性是做不到这些的,所以getter和setter提供接口比直接暴露属性安全,具有一定的意义。 其实getter和setter主要受早期ejb的pojo思想的影响,导致后期的一些框架索性自动生成getter和setter,并通过反射的方式来访问属性。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧