为什么要声明getter和setter方法是私有的?

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方法提供了添加额外行为或错误检查代码的位置.

  • 它们还提供了添加调试代码或注入测试代码的位置(用于单元测试).

  • 可以覆盖吸气剂和制定者.您不能使用字段(私有或非私有).