Usunięcie modyfikatora dostępu
Java pierwotnie miała private protectedmodyfikator, 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 protecteddostę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 protectedale 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 protectedUsunię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 protectedto, 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 protectedmodyfikatora zmieniło się w wersji Beta2 Javy, a private protectedkombinacja 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ż protectedznaczenie zmieniło się 1 , może zaistnieć potrzeba przyzwolenia privatei protectedw 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ż privatebyło zbyt restrykcyjne i protectedzbyt łagodne.