即使你使用getter和setter(我个人会 – 我几乎总是将字段保密)这并不意味着受保护变得毫无意义……它只是意味着你可能会让getter和setter本身受到保护而不是变量.
如果您的问题实际上是关于受保护的可访问性是否有用,我会说 – 有一个只能访问子类的成员通常是有意义的.更重要的是,我有时会使用受超类调用的受保护抽象方法,但在层次结构之外无法访问.
例如,在模板方法模式中,您可能有一个公共方法可以进行一些设置,调用受保护的抽象方法,然后也可能做一些最终的工作.您不希望抽象方法是公共的,因为您希望确保执行开始/结束代码…并且您不希望强制显式地通过子类调用该代码.