¿Por qué se recomienda declarar las variables de instancia como privadas?

Mi pregunta se relaciona con Java, pero también se puede aplicar a C #. Me preguntaba por qué todo el mundo recomienda hacer las variables de instancia.privado a diferencia de hacerlosprotegido.

Pensemos en ello. Las variables privadas no son vistas por la subclase, por lo que si necesito acceder o cambiar las variables de la superclase en mi subclase, me veo obligado a usar algún método de acceso y mutadores comogetMyPrivateVariable osetMyPrivateVariable. Pero cuando extiende alguna clase y hereda a sus miembros, esto funciona como si los hubiera declarado directamente en la subclase. Así que, lógicamente, esto significa que la subclase también debería tener acceso directo a las variables de instancia y justifica el diseño de la clase con variables protegidas. Entiendo que tal práctica rompería la encapsulación, pero esto parece irrelevante en el caso de la herencia, porque, nuevamente, en este caso, todo funciona como si los miembros de la superclase fueran declarados en la sub-clase, entonces la sub-base tiene un "derecho natural". para poder acceder directamente a sus miembros, sin importar si fueron heredados o no. La encapsulación, en mi opinión, es más importante para interactuar con el objeto por otros objetos que están fuera del árbol de herencia del objeto.

Entonces, mi pregunta es ¿por qué todos recomiendan declarar las variables de instancia de la clase como privadas en lugar de protegidas?

Respuestas a la pregunta(6)

Su respuesta a la pregunta