Van*_*tel 23 java encapsulation getter-setter
我看到了一个代码,其中getter和setter方法被声明为private.我试图找出它背后的逻辑,我真的很难理解为什么你会将它们声明为私有?这与我们试图通过吸气剂和制定者实现的完全相反.
Luc*_*ore 18
我可以想到几个原因:
如果一个不同的程序员看到你的代码并希望访问一个变量,但是没有setter和getter,他可能会认为你只是忘了它们,并自己添加它们.但是,如果你将它们声明为private,它是一个意图声明,说我不希望从外部更改或访问这些变量.
假设你不想要public访问者.但也许您想要计算私有变量被更改的次数.每次访问该变量时,使用setter更容易,而不是递增计数.
同样,您不希望public访问,但在调试期间,您可能希望在private成员更改的每个位置放置断点.因此,您只需在访问器中设置一个断点,而不是在类中的任何位置设置断点.
Ste*_*n C 10
这与我们试图通过吸气剂和制定者实现的完全相反.
实际上,事实并非如此.声明getter和setter的原因是隐藏字段.这样做是为了避免不必要的耦合; 即API的客户端,具体取决于API的实现细节.(由于多种原因,这种耦合可能会有问题.)
使getter和setter 私有的原因是使对象的抽象状态的相应部分变为私有.这在很大程度上与决定是否使用getter和setter无关.
虽然使用吸气剂和制定者的情况对私人国家来说并不那么强烈,但仍然有实实在在的好处.例如:
getter/setter方法提供了添加额外行为或错误检查代码的位置.
它们还提供了添加调试代码或注入测试代码的位置(用于单元测试).
可以覆盖吸气剂和制定者.您不能使用字段(私有或非私有).
| 归档时间: |
|
| 查看次数: |
14047 次 |
| 最近记录: |