直接使用类属性

Eug*_*ene 4 java oop

我听说直接使用类属性并不是一个好主意,而是使用setter和getter.有人可以告诉我为什么吗?

小智 6

有趣的是,关于这个主题的维基百科文章提供了很好的指导:http://en.wikipedia.org/wiki/Accessor

简而言之,类应该使用mutator方法(getter,setter等)在私有存储之前验证输入.这样做可确保始终可以依赖代码中的其他位置.

相比之下,如果属性是全球可用的,任何人都可以修改它.例如,如果您有一个需要特定格式的字符串,并且有人添加了一个不正确的值,则可能会导致错误.


Joe*_*Joe 5

简而言之,如果您编写接口(包含getter和setter到私有字段)的代码,那么您可以换出符合该接口的任何对象.对象字段的外部引用意味着外部用户知道实现.这会在对象的使用者和对象的实现之间创建耦合,在这种情况下这是一件坏事.

今天你的name领域可能会被存储为一个String但是明年你可能想要将它更新为一些更有趣的类型或者从其他地方或任何地方获取信息......谁知道呢?使用字段会阻止您这样做.使用访问器可以让您根据需要更改实现.这是一个比你想象的更重要的原则.

你可能会发现这个感兴趣:编码到接口?