Remoção do modificador de acesso
O Java tinha originalmente o private protected
modificador, mas foi removido no JDK 1.0.2 (a primeira versão estável , o Java 1.0 que conhecemos hoje). Alguns tutoriais sobre o JDK 1.0.2 ( aqui e aqui ) dizem o seguinte:
Nota: A versão 1.0 da linguagem Java suporta cinco níveis de acesso: os quatro listados acima, mais private protected
. O private protected
nível de acesso não é suportado em versões do Java maiores que 1.0; você não deve mais usá-lo em seus programas Java.
Outra resposta no SoftwareEngineering.SE afirma:
O Java originalmente tinha esse modificador. Foi escrito, private protected
mas removido no Java 1.0.
Agora dê uma olhada no histórico de versões do Java :
JDK 1.0
A primeira versão foi lançada em 23 de janeiro de 1996 e denominada Oak. A primeira versão estável, JDK 1.0.2, é chamada Java 1.
A partir disso, podemos concluir que os tutoriais sobre a versão 1.0.2 se referem à primeira versão, JDK 1.0, onde o idioma foi chamado Oak, mas o de SoftwareEngineering.SE se refere à primeira versão estável, o JDK 1.0.2, chamada Java. 1.0, onde foi removido.
Agora, se você tentar procurá-lo na documentação do Java 1.0 , não o encontrará, porque, como mencionado anteriormente, ele foi removido no JDK 1.0.2, também conhecido como Java 1.0. Isso é comprovado novamente quando você olha para os horários "Última modificação" do link que você postou. O link que você postou foi modificado pela última vez em fevereiro de 1996. O Java 1.0 / JDK 1.0.2, quando private protected
foi removido, foi lançado após fevereiro de 1996 e, de acordo com a especificação, agosto de 1996.
Motivo da retirada
Algumas fontes também explicam o motivo private protected
, como este . Citar:
O que foi protegido privado?
No início, a linguagem Java permitia certas combinações de modificadores, um dos quais era private protected
. O significado de private protected
era limitar a visibilidade estritamente às subclasses (e remover o acesso ao pacote). Mais tarde, isso foi considerado algo inconsistente e excessivamente complexo e não é mais suportado. [5]
[5] O significado do protected
modificador mudou na versão Beta2 do Java, e a private protected
combinação apareceu ao mesmo tempo. Eles corrigiram algumas falhas de segurança em potencial, mas confundiram muitas pessoas.
E o SoftwareEngineering.SE também suporta isso, dizendo que não valia as inconsistências e a complexidade extra, por isso foi removido desde o início.
Interpretação
Minha interpretação de tudo isso é que talvez, nos dias de Oak, ambos pudessem coexistir (daí a combinação). Desde que protected
o significado mudou 1 , pode ter havido uma necessidade de permissão private
e protected
ao mesmo tempo. A introdução tornou-se muito complexa e não valia a pena, e foi descartada no final. Quando o Java 1.0 / JDK 1.0.2 foi lançado, ele havia sido descartado e, portanto, não pode ser encontrado na documentação.
1 Na Especificação da linguagem Oak , Seção 4.10, Acesso a variáveis e métodos , observe que o modificador padrão era protected
:
Por padrão, todas as variáveis e métodos em uma classe são protegidos .
Isso é bem diferente do que temos hoje, o acesso ao pacote padrão. Isso pode ter aberto o caminho para a necessidade de private protected
, porque private
era muito restritivo e protected
muito branda.