Удаление модификатора доступа
У 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. Это еще раз подтверждается, когда вы смотрите «Время последнего изменения» для ссылки, которую вы разместили. Ссылка, которую вы разместили, была в последний раз изменена в феврале 1996 года. Java 1.0 / JDK 1.0.2, когда она private protected
была удалена, была выпущена после февраля 1996 года и согласно спецификации, август 1996 года.
Причина удаления
Некоторые источники также объясняют причину private protected
, такую как эта . Цитировать:
Что было в частной собственности?
Ранее язык 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
слишком мягким.