Usunięcie modyfikatora dostępu
Java pierwotnie miała private protected
modyfikator, ale został on usunięty w JDK 1.0.2 (pierwsza stabilna wersja, Java 1.0, którą znamy dzisiaj). Kilka samouczków dotyczących JDK 1.0.2 ( tutaj i tutaj ) mówi, co następuje:
Uwaga: Wersja 1.0 języka Java obsługiwała pięć poziomów dostępu: cztery wymienione powyżej plus private protected
. Poziom private protected
dostępu nie jest obsługiwany w wersjach Java wyższych niż 1.0; nie powinieneś już używać go w swoich programach Java.
Inna odpowiedź na SoftwareEngineering.SE brzmi:
Java pierwotnie miała taki modyfikator. Został napisany, private protected
ale usunięty w Javie 1.0.
Teraz spójrz na historię wersji Java :
JDK 1.0
Pierwsza wersja została wydana 23 stycznia 1996 roku i nosiła nazwę Oak. Pierwsza stabilna wersja, JDK 1.0.2, nosi nazwę Java 1.
Z tego możemy wywnioskować, że samouczki dotyczące wersji 1.0.2 odnoszą się do pierwszej wersji JDK 1.0, w której język nazywał się Oak, ale ten z SoftwareEngineering.SE odnosi się do pierwszej stabilnej wersji, JDK 1.0.2 zwanej Java 1.0, gdzie został usunięty.
Teraz, jeśli spróbujesz wyszukać go w dokumentacji Java 1.0 , nie znajdziesz go, ponieważ jak wspomniano wcześniej, został usunięty w JDK 1.0.2, znanym również jako Java 1.0. Jest to ponownie udowodnione, gdy spojrzysz na czasy ostatniej modyfikacji dla opublikowanego linku. Opublikowane łącze zostało ostatnio zmodyfikowane w lutym 1996 r. private protected
Usunięta Java 1.0 / JDK 1.0.2 została wydana po lutym 1996 r. , A zgodnie ze specyfikacją w sierpniu 1996 r.
Przyczyna usunięcia
Niektóre źródła wyjaśniają również powód private protected
, na przykład ten . Cytować:
Co było chronione prywatnie?
Na początku język Java pozwalał na pewne kombinacje modyfikatorów, z których jednym był private protected
. Chodziło o private protected
to, aby ograniczyć widoczność ściśle do podklas (i usunąć dostęp do pakietu). Zostało to później uznane za nieco niespójne i zbyt skomplikowane i nie jest już obsługiwane. [5]
[5] Znaczenie protected
modyfikatora zmieniło się w wersji Beta2 Javy, a private protected
kombinacja pojawiła się w tym samym czasie. Poprawili kilka potencjalnych luk w zabezpieczeniach, ale zdezorientowali wielu ludzi.
SoftwareEngineering.SE również to wspiera, mówiąc, że nie było warte niespójności i dodatkowej złożoności, więc zostało wcześnie usunięte.
Interpretacja
Moja interpretacja tego wszystkiego jest taka, że być może w czasach dębu obaj mogli współistnieć (stąd ta kombinacja). Ponieważ protected
znaczenie zmieniło się 1 , może zaistnieć potrzeba przyzwolenia private
i protected
w tym samym czasie. Wprowadzenie stało się zbyt skomplikowane i nie było tego warte, a zatem ostatecznie zostało porzucone. Zanim pojawiła się Java 1.0 / JDK 1.0.2, została usunięta i dlatego nie można jej znaleźć w dokumentacji.
1 W specyfikacji języka Oak , sekcja 4.10, Dostęp do zmiennych i metod , zauważono, że domyślnym modyfikatorem był protected
:
Domyślnie wszystkie zmienne i metody w klasie są chronione .
To jest zupełnie inne niż to, co mamy dzisiaj, domyślny dostęp do pakietu. Mogło to utorować drogę potrzebom private protected
, ponieważ private
było zbyt restrykcyjne i protected
zbyt łagodne.