Видалення модифікатора доступу
У Java був private protected
модифікатор, але він був видалений у JDK 1.0.2 (перша стабільна версія - Java 1.0, яку ми знаємо сьогодні). Кілька навчальних посібників щодо JDK 1.0.2 ( тут і тут ) говорять наступне:
Примітка: Випуск 1.0 мови мови підтримував п'ять рівнів доступу: чотири перераховані вище плюс private protected
. Рівень private protected
доступу не підтримується у версіях Java вище 1,0; ви більше не повинні використовувати його у своїх програмах Java.
Ще одна відповідь на SoftwareEngineering.SE говорить:
Java спочатку мала такий модифікатор. Це було написано, private protected
але видалено в Java 1.0.
Тепер подивіться історію версій Java :
JDK 1.0
Перша версія була випущена 23 січня 1996 року і отримала назву Дуб. Перша стабільна версія, 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 року. Після private protected
видалення Java 1.0 / JDK 1.0.2 було видалено після лютого 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
занадто м'яким.