Ответ 1
Удаление модификатора доступа
В Java первоначально был модификатор private protected
, но он был удален в JDK 1.0.2 (первая стабильная версия Java 1.0, которую мы знаем сегодня). Несколько руководств по JDK 1.0.2 (здесь и здесь) говорят следующее:
Примечание. Версия 1.0 языка Java поддерживает пять уровней доступа: четыре перечисленные выше плюс
private protected
. Уровень доступаprivate protected
не поддерживается в версиях Java выше 1.0; вы больше не должны использовать его в своих программах Java.
Другой ответ на SoftwareEngineering.SE гласит:
Java первоначально имел такой модификатор. Это было написано
private protected
, но удалено в Java 1.0.
Теперь взгляните на История версий Java:
JDK 1.0
Первая версия была выпущена на 23 января 1996 года и называется Oak. Первая стабильная версия JDK 1.0.2 называется Java 1.
Из этого можно заключить, что учебники по версии 1.0.2 относятся к самой первой версии JDK 1.0, где язык был назван Oak, но тот, который из SoftwareEngineering.SE относится к первой стабильной версии JDK 1.0. 2 называется Java 1.0, где он был удален.
Теперь, если вы попытаетесь найти его в Java 1.0 документации, вы его не найдете, потому что, как упоминалось ранее, был удален в JDK 1.0.2, иначе известный как Java 1.0. Это снова подтверждается, когда вы просматриваете "Last Modified" раз для ссылки, которую вы опубликовали. Ссылка, которую вы опубликовали, была в последний раз изменена в феврале 1996 года. Java 1.0/JDK 1.0.2, когда private protected
был удален, был выпущен после февраля 1996 года и согласно спецификации, август 1996 года.
Причина удаления
Некоторые источники также объясняют причину private protected
, например this. Цитировать:
Что было конфиденциально защищено?
В начале язык Java допускал определенные комбинации модификаторов, один из которых был
private protected
. Значениеprivate protected
заключалось в том, чтобы ограничить видимость строго подклассами (и удалить доступ к пакетам). Позднее это было сочтено несколько непоследовательным и чрезмерно сложным и больше не поддерживается. [5][5] Значение модификатора
protected
изменилось в версии Java Beta2, а комбинацияprivate protected
появилась одновременно. Они исправили некоторые потенциальные дыры в безопасности, но смутили многих людей.
И SoftwareEngineering.SE также поддерживает это, говоря, что это не стоило несоответствий и дополнительной сложности, поэтому он был удален на раннем этапе.
Интерпретация
Моя интерпретация всего этого заключается в том, что, возможно, еще в дубовые дни, им было позволено сосуществовать (отсюда и комбинация). Поскольку значение protected
изменилось 1 возможно, было необходимо одновременно разрешить private
и protected
. Введение стало слишком сложным и не стоило того, и, таким образом, оно упало в конце. К тому времени, когда развернулась Java 1.0/JDK 1.0.2, она была удалена и, следовательно, не найдена в документации.
1 В Спецификация языка дуба, раздел 4.10, Доступ к переменным и методам, отмечается, что модификатор по умолчанию был protected
:
По умолчанию все переменные и методы в классе защищены.
Это сильно отличается от того, что у нас есть сегодня - доступ к пакету по умолчанию. Возможно, это проложило путь для необходимости private protected
, потому что private
был слишком строгим, а protected
был слишком мягким.