一尘不染

在java中为什么要使用赋值和取值方法来访问属性?

java

在java中为什么要使用赋值getter和取值setter方法来访问属性?


阅读 812

收藏
2020-01-07

共1个答案

一尘不染

实际上,有很多充分的理由考虑使用访问器,而不是直接公开类的字段-除了封装的论点之外,并使将来的更改更容易。

这是我知道的一些原因:

  • 封装与获取或设置属性相关的行为-这样可以在以后更轻松地添加其他功能(例如验证)。
  • 隐藏属性的内部表示形式,同时使用替代表示形式公开属性。
  • 将公共接口与更改隔离开来-在实现更改的同时允许公共接口保持不变,而不会影响现有的使用者。
  • 控制属性的生存期和内存管理(处置)语义-在非托管内存环境(如C ++或Objective-C)中尤其重要。
  • 为属性何时在运行时更改提供调试拦截点-在某些语言中,如果没有属性,则在何时何地更改为特定值的调试非常困难。
  • 与旨在针对属性获取程序/设置程序进行操作的库之间的改进的互操作性-我想到了模拟,序列化和WPF。
  • 通过覆盖getter / setter方法,允许继承者更改属性行为的语义,并公开该属性。
  • 允许将getter / setter作为lambda表达式而不是值传递。
  • getter和setter可以允许不同的访问级别-例如,get可以是公共的,但是set可以受到保护。
2020-01-08