Rimozione del modificatore di accesso
Java originariamente aveva il private protected
modificatore, ma è stato rimosso in JDK 1.0.2 (la prima versione stabile , Java 1.0 che conosciamo oggi). Alcuni tutorial su JDK 1.0.2 ( qui e qui ) dicono quanto segue:
Nota: la versione 1.0 del linguaggio Java supportava cinque livelli di accesso: i quattro sopra elencati plus private protected
. Il private protected
livello di accesso non è supportato nelle versioni di Java successive alla 1.0; non dovresti più usarlo nei tuoi programmi Java.
Un'altra risposta su SoftwareEngineering.SE afferma:
Java originariamente aveva un tale modificatore. È stato scritto private protected
ma rimosso in Java 1.0.
Ora dai un'occhiata alla cronologia delle versioni di Java :
JDK 1.0
La prima versione è stata rilasciata il 23 gennaio 1996 e si chiamava Oak. La prima versione stabile, JDK 1.0.2, si chiama Java 1.
Da questo, possiamo concludere che i tutorial relativi alla versione 1.0.2 si riferiscono alla primissima versione, JDK 1.0, in cui il linguaggio era chiamato Oak, ma quello di SoftwareEngineering.SE si riferisce alla prima versione stabile, JDK 1.0.2 chiamato Java 1.0, dove è stato rimosso.
Ora se provi a cercarlo nella documentazione di Java 1.0 , non lo troverai, perché come menzionato in precedenza, è stato rimosso in JDK 1.0.2, altrimenti noto come Java 1.0. Ciò è dimostrato di nuovo quando si guardano i tempi di "Ultima modifica" per il collegamento pubblicato. Il collegamento che hai pubblicato è stato modificato l'ultima volta nel febbraio del 1996. Java 1.0 / JDK 1.0.2, quando è private protected
stato rimosso, è stato rilasciato dopo il febbraio del 1996 e, secondo le specifiche, nell'agosto del 1996.
Motivo della rimozione
Alcune fonti spiegano anche il motivo private protected
, come questo . Per citare:
Cosa era protetto da privati?
All'inizio, il linguaggio Java consentiva alcune combinazioni di modificatori, uno dei quali era private protected
. Il significato di private protected
era limitare rigorosamente la visibilità alle sottoclassi (e rimuovere l'accesso al pacchetto). Questo è stato successivamente ritenuto in qualche modo incoerente e eccessivamente complesso e non è più supportato. [5]
[5] Il significato del protected
modificatore è cambiato nella versione Beta2 di Java e la private protected
combinazione è apparsa allo stesso tempo. Hanno corretto alcune potenziali falle nella sicurezza, ma hanno confuso molte persone.
E SoftwareEngineering.SE supporta anche questo, dicendo che non valeva le incoerenze e la complessità aggiuntiva, quindi è stato rimosso all'inizio.
Interpretazione
La mia interpretazione di tutto ciò è che forse, ai tempi di Oak, entrambi potevano coesistere (da qui la combinazione). Dato che protected
il significato era cambiato 1 , potrebbe esserci stata la necessità di consentire private
e protected
allo stesso tempo. L'introduzione divenne troppo complessa e non ne valeva la pena, e alla fine fu abbandonata. Al momento del lancio di Java 1.0 / JDK 1.0.2, era stato eliminato e quindi non è stato trovato nella documentazione.
1 In Oak Language Specification , Sezione 4.10, Accesso a variabili e metodi , si nota che il modificatore predefinito era protected
:
Per impostazione predefinita, tutte le variabili e i metodi in una classe sono protetti .
Questo è abbastanza diverso da quello che abbiamo oggi, l'accesso al pacchetto predefinito. Questo potrebbe aver spianato la strada al bisogno di private protected
, perché private
era troppo restrittivo ed protected
era troppo indulgente.