He visto algunas referencias que se refieren a un modificador de acceso en Java llamado private protected(ambas palabras juntas):
private protected someMethod() {
}
Una de las páginas que encontré en referencia a esto está aquí . La lección de mi escuela también se refirió a este modificador de acceso (y dijo que existe). Sin embargo, su uso da como resultado un error en el lenguaje Java.
Intenté con variables y métodos y estoy bastante seguro de que no existe, pero quiero una explicación de lo que sucedió. ¿Fue considerado, luego rechazado? ¿O se eliminó en una versión más nueva de Java?
Editar: no estoy buscando información sobre la protectedpalabra clave.

private protectedmodificador combinado allí.private protecteden esa respuesta, pero no explica por qué o qué le sucedió, de qué trata esta pregunta.Respuestas:
Eliminación del modificador de acceso.
Java originalmente tenía el
private protectedmodificador, 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:Otra respuesta sobre SoftwareEngineering.SE afirma:
Ahora eche un vistazo al Historial de versiones de Java :
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 protectedse 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: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
protectedel significado había cambiado 1 , puede haber sido necesario permitirprivateyprotectedal 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: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, porqueprivateera demasiado restrictivo yprotecteddemasiado indulgente.fuente
Early on, the Java language allowed for certain combinations of modifiers,¿Eso significa que había más que solo "Protección Privada"?Hay historias confusas / poco claras:
Uno, de la fuente de Princeton que pones, y también de los archivos del MIT , afirma que:
Pero esta característica no se especifica en ninguna documentación oficial para Java 1.0 aquí o aquí .
Supongo que esta característica no llegó a la versión oficial 1.0, ya que la especificación del idioma oficial es de agosto de 1996 y la fuente de Princeton se modificó por última vez en febrero de 1996 .
PD: lástima de Oracle por eliminar los archivos de las versiones anteriores.
fuente
Como sugiere el enlace que proporcionó en su pregunta,
private protectedse usó enelement/memberuna clase, cuando deseasubclassque pueda acceder al elemento pero mantenerlo oculto de otras clases en élpackage.Javasi se compara conC++tiene un concepto adicional de elementos de encapsulación, y ese es un paquete . También se debe entender qué es accesible dentro o fuera de un paqueteJavacuando se trata de estos especificadores de acceso comoprivate,public&protected.Tenga en cuenta que he explicado por qué se utilizó. No en la versión actual, por supuesto.
fuente
No, no se puede utilizar tanto en
privateunprotectedconjunto. Tu tutorial es extraño. Lo que tiene es el llamado paquete privado o en acceso de paquete protegido de ot6 referencias. Este es el acceso predeterminado que se habilita cuando no se escribe explícitamente ningún calificador acc6.fuente
El ámbito privado está dentro de la clase existente. En donde Protegido se puede acceder dentro del paquete y la clase extendida por las clases en otros paquetes.
Sin problemas si desea que sus variables / métodos tengan acceso fuera del paquete, debe definirlo como protegido / público, de lo contrario privado o algún otro especificador de acceso.
Por lo general, se puede acceder a los métodos protegidos desde un paquete externo y dentro de subclases, es decir, una clase debe extender la clase respectiva para aprovechar los métodos definidos protegidos.
Los métodos / variables privadas tienen alcance dentro de la clase. No pueden ser accesibles fuera de la clase.
Por lo tanto, no puede definir Private Protected al mismo tiempo.
fuente