Comencemos con otro comportamiento: incluso si declara un método/variable como privado, otra instancia de la misma clase puede acceder a él. Está bien, puedo vivir con eso. Yo llamo a estos class-private y no instance-private.En Java, ¿por qué un método de superclase no puede acceder a métodos/variables protegidos o privados desde una instancia de subclase?
Ahora la parte pregunta: Por ejemplo, en tiempo de ejecución Quiero ser capaz de verificar que todas las variables de cadena en this
clase no son nulos, y si son nulos que se debe cambiar a la cadena "NULL".
Puedo ejecutar las variables usando la reflexión y obtener sus valores. Pero si amplío mi clase y agrego variables privadas o incluso protegidas, mi clase base no puede acceder a ellas. Tengo que setAccessible
en las variables antes de poder usarlas.
Así que por favor explíqueme por qué la clase base (superclase) no puede acceder a variables privadas/protegidas desde su subclase. Es su subclase, así que no lo entiendo. ¿Cuál es la idea detrás de esto?
Sé que la superclase no debería conocer sus subclases, pero en mi ejemplo tiene sentido, ¿no?
¿Es porque no puedo o no debo restringir mis subclases de esta manera?
Actualización: Sobre la base de las respuestas, quiero saber también: ¿Por qué no se accede a variables privadas de otra instancia de la misma clase considerada una violación de la encapsulación?
no, no tiene sentido. –