在getter和setter上使用受保护的变量有什么好处吗?

Ste*_* P. 6 java

忽视使变量protected变得方便的事实,是否有任何实际需要存在的东西protected

Jon*_*eet 16

即使你使用getter和setter(我个人会这样 - 我几乎总是将字段保密)这并不意味着protected变得毫无意义......它只是意味着你可能会自己制作getter和setter protected而不是变量.

如果您的问题实际上是关于protected可访问性是否有用,我会说 - 有一个只能访问子类的成员通常是有意义的.更重要的是,我有时会使用受超类调用的受保护抽象方法,但在层次结构之外无法访问.

例如,在模板方法模式中,您可能有一个公共方法可以进行一些设置,调用受保护的抽象方法,然后也可能做一些最终的工作.您不希望抽象方法是公共的,因为您希望确保执行开始/结束代码...并且您不希望强制显式地通过子类调用该代码.