Java中的get()和set()方法

Java中的get()和set()方法

在java文件中总是能看到各种get和set方法,写法非常简单,但是具体什么时候要用呢?

为了保持方法的封闭性(即对类中的域变量进行封闭操作),用private来修饰他们的变量,其他类不能对该变量访问。这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性。

get和set方法就是用于访问域变量。

set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是在set和get后面跟上一些特定的词来形成特定意思的方法名,比如setage()和getage(),表示设置年龄和获取年龄。

刚开始学c++、java时候一直非常纳闷为什么要把类的属性设为private,修改这些属性通过getset方法,当时的解释是安全。core Java对此的解释是三个好处:

1.安全
比如People类的属性name可以设置为只读域,即只有get方法,没有set方法,当在构造方法中设置完毕,就没有任何一个办法可以对它进行修改,这样来确保name域不会受到外界的破坏。

2.方便调试
People类的属性age虽然不是只读域,但是只能通过setAge (int age)方法进行修改,一旦这个属性值出现了问题,只要调试这个方法就可以了。如果age属性是public修饰,破坏这个属性值的捣乱者则可能出现在任何地方。

3.可以轻易改变内部实现
如果将存储名字的属性改为

String firstName;
String lastName;

那么getName方法可以改为返回
firstName+" "+lastName,只需要修改getName()方法的内部实现,不会影响到其他代码。

4.可以执行错误检查
比如setAge()方法我们可以在设置之前判断参数age是否大于0。

在《码出高效》中对于封装的好处是这么描述的:封装是由俭入奢易,由奢入俭难。属性值的访问与修改需要使用相应的getter/setter方法,而不是对public的属性进行读取和修改。
如果有一天,类的提供方想在修改属性的setter方法上进行鉴权控制,日志记录,这是在直接访问属性的情形中无法做到的。若是将已经公开的属性和行为直接暴力修改为private,则依赖模块都会编译出错。所以,在不知道什么样的访问控制权限合适的时候,优先推荐使用private控制级别




参考:https://www.jianshu.com/p/b6f04fc28c75
 

  • 58
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值