美文网首页
通过get/set方法看封装的好处

通过get/set方法看封装的好处

作者: 憩在河岸上的鱼丶 | 来源:发表于2017-09-11 00:48 被阅读0次

    刚开始学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控制级别

    相关文章

      网友评论

          本文标题: 通过get/set方法看封装的好处

          本文链接:https://www.haomeiwen.com/subject/bahxsxtx.html