Eliminación del modificador de acceso.
Java originalmente tenía el private protected
modificador, pero se eliminó en JDK 1.0.2 (la primera versión estable , la Java 1.0 que conocemos hoy). Algunos tutoriales sobre JDK 1.0.2 ( aquí y aquí ) dicen lo siguiente:
Nota: La versión 1.0 del lenguaje Java admite cinco niveles de acceso: los cuatro enumerados anteriormente más private protected
. El private protected
nivel de acceso no es compatible con versiones de Java superiores a 1.0; ya no deberías usarlo en tus programas Java.
Otra respuesta sobre SoftwareEngineering.SE afirma:
Java originalmente tenía un modificador de este tipo. Fue escrito private protected
pero eliminado en Java 1.0.
Ahora eche un vistazo al Historial de versiones de Java :
JDK 1.0
La primera versión se lanzó el 23 de enero de 1996 y se llamó Oak. La primera versión estable, JDK 1.0.2, se llama Java 1.
De esto, podemos concluir que los tutoriales con respecto a la versión 1.0.2 se refieren a la primera versión, JDK 1.0, donde el lenguaje se llamaba Oak, pero el de SoftwareEngineering.SE se refiere a la primera versión estable, JDK 1.0.2 llamada Java 1.0, donde fue eliminado.
Ahora, si intenta buscarlo en la documentación de Java 1.0 , no lo encontrará, porque como se mencionó anteriormente, se eliminó en JDK 1.0.2, también conocido como Java 1.0. Esto se prueba nuevamente cuando mira las horas de "Última modificación" para el enlace que publicó. El enlace que publicó se modificó por última vez en febrero de 1996. Java 1.0 / JDK 1.0.2, cuando private protected
se eliminó, se lanzó después de febrero de 1996 y, según las especificaciones, agosto de 1996.
Motivo de Retiro
Algunas fuentes también explican la razón private protected
, como esta . Citar:
¿Qué fue privado protegido?
Al principio, el lenguaje Java permitía ciertas combinaciones de modificadores, uno de los cuales era private protected
. El significado de private protected
era limitar la visibilidad estrictamente a las subclases (y eliminar el acceso al paquete). Más tarde, esto se consideró algo inconsistente y demasiado complejo y ya no es compatible. [5]
[5] El significado del protected
modificador cambió en la versión Beta2 de Java, y la private protected
combinación apareció al mismo tiempo. Repararon algunos posibles agujeros de seguridad, pero confundieron a muchas personas.
Y SoftwareEngineering.SE también respalda esto, al decir que no valía la pena las inconsistencias y la complejidad adicional, por lo que se eliminó desde el principio.
Interpretación
Mi interpretación de todo esto es que quizás, en los días de Oak, a ambos se les permitía coexistir (de ahí la combinación). Debido a que protected
el significado había cambiado 1 , puede haber sido necesario permitir private
y protected
al mismo tiempo. La introducción se volvió demasiado compleja y no valió la pena, por lo que finalmente se abandonó. En el momento en que Java 1.0 / JDK 1.0.2 llegó, ya se había eliminado y, por lo tanto, no se puede encontrar en la documentación.
1 En la Especificación del lenguaje Oak , Sección 4.10, Acceso a variables y métodos , se observa que el modificador predeterminado era protected
:
Por defecto, todas las variables y métodos de una clase están protegidos .
Esto es bastante diferente de lo que tenemos hoy, el acceso predeterminado al paquete. Esto puede haber allanado el camino para la necesidad private protected
, porque private
era demasiado restrictivo y protected
demasiado indulgente.