访问修饰符的目的是什么?

spa*_*ama 7 java access-modifiers

我知道这适用于许多语言,而不仅仅是Java,但这是我最熟悉的语言.

我理解修饰符的作用以及如何使用它们.我只是想知道,为什么我们需要它们?为什么不能访问每个对象,无论它是否需要?

Phi*_*ipp 16

当你必须维护一个更大的项目时,原因会变得更加明显.当方法或变量是公共的时,在对其进行更改时必须要小心,因为您永远不知道代码库的哪些部分依赖于其确切的行为.

但是当变量或方法是私有的时,你知道它不是在类之外使用的.这意味着当您进行更改时,您需要注意的代码要少得多.

通过将类功能设为私有和公共,您可以清楚地将接口与外部世界分隔开来.您暴露于外部世界的次数越少,您对内部实施所做的事情就越自由.

例如,当您始终将变量设为私有并通过getter和setter访问它们时,您可以稍后将它们从变量更改为计算值,然后甚至为了性能原因将缓存添加到计算中.如果它是一个公共变量,则必须在使用变量的任何地方更改代码.但是当你通过getter和setter将它暴露给外面的世界时,所有其他代码都可以继续使用该类,就好像什么都没有改变一样.

  • 能够对实现进行更改实际上只是答案的一部分。 (2认同)
  • “外部世界”的使用具有误导性。为什么我会担心办公室外的一棵树能否访问类内的变量?他们应该说“对项目中的所有其他代码”或类似的内容。 (2认同)