Entfernen des Zugriffsmodifikators
Java hatte ursprünglich den private protected
Modifikator, wurde jedoch in JDK 1.0.2 (der ersten stabilen Version, Java 1.0, die wir heute kennen) entfernt. In einigen Tutorials zu JDK 1.0.2 ( hier und hier ) heißt es:
Hinweis: Die Version 1.0 der Java-Sprache unterstützt fünf Zugriffsebenen: die vier oben aufgeführten plus private protected
. Die private protected
Zugriffsebene wird in Java-Versionen über 1.0 nicht unterstützt. Sie sollten es nicht mehr in Ihren Java-Programmen verwenden.
Eine weitere Antwort auf SoftwareEngineering.SE lautet:
Java hatte ursprünglich einen solchen Modifikator. Es wurde private protected
in Java 1.0 geschrieben, aber entfernt.
Schauen Sie sich jetzt den Java-Versionsverlauf an :
JDK 1.0
Die erste Version wurde am 23. Januar 1996 veröffentlicht und heißt Oak. Die erste stabile Version, JDK 1.0.2, heißt Java 1.
Daraus können wir schließen, dass sich die Tutorials zu Version 1.0.2 auf die allererste Version, JDK 1.0, beziehen, in der die Sprache Oak hieß, die von SoftwareEngineering.SE jedoch auf die erste stabile Version, JDK 1.0.2, genannt Java 1.0, wo es entfernt wurde.
Wenn Sie nun versuchen, in der Java 1.0-Dokumentation danach zu suchen , werden Sie es nicht finden, da es, wie bereits erwähnt, in JDK 1.0.2, auch bekannt als Java 1.0, entfernt wurde. Dies wird erneut bewiesen, wenn Sie sich die "Zuletzt geänderten" Zeiten für den von Ihnen geposteten Link ansehen. Der von Ihnen veröffentlichte Link wurde zuletzt im Februar 1996 geändert. Als Java 1.0 / JDK 1.0.2 private protected
entfernt wurde, wurde es nach Februar 1996 und gemäß der Spezifikation im August 1996 veröffentlicht.
Grund für die Entfernung
Einige Quellen erklären auch den Grund dafür private protected
, wie dieser . Zitieren:
Was war privat geschützt?
Schon früh erlaubte die Java-Sprache bestimmte Kombinationen von Modifikatoren, von denen einer war private protected
. Die Bedeutung von private protected
bestand darin, die Sichtbarkeit streng auf Unterklassen zu beschränken (und den Paketzugriff zu entfernen). Dies wurde später als etwas inkonsistent und übermäßig komplex angesehen und wird nicht mehr unterstützt. [5]
[5] Die Bedeutung des protected
Modifikators wurde in der Beta2-Version von Java geändert, und die private protected
Kombination wurde gleichzeitig angezeigt. Sie haben einige potenzielle Sicherheitslücken ausgebessert, aber viele Menschen verwirrt.
Und das SoftwareEngineering.SE unterstützt dies auch, indem es sagt, dass es die Inkonsistenzen und die zusätzliche Komplexität nicht wert war, so dass es frühzeitig entfernt wurde.
Deutung
Meine Interpretation von all dem ist, dass vielleicht in den Tagen der Eiche beide koexistieren durften (daher die Kombination). Da sich protected
die Bedeutung von 1 geändert hatte , bestand möglicherweise die Notwendigkeit, dies zuzulassen private
und protected
gleichzeitig. Die Einführung wurde zu komplex und war es nicht wert und wurde daher am Ende fallen gelassen. Zum Zeitpunkt der Einführung von Java 1.0 / JDK 1.0.2 war es gelöscht worden und daher nicht in der Dokumentation zu finden.
1 In der Oak-Sprachspezifikation , Abschnitt 4.10, Zugriff auf Variablen und Methoden , wird darauf hingewiesen, dass der Standardmodifikator Folgendes war protected
:
Standardmäßig sind alle Variablen und Methoden in einer Klasse geschützt .
Dies unterscheidet sich erheblich von dem, was wir heute haben, dem Standardpaketzugriff. Dies mag den Weg für die Notwendigkeit von geebnet haben private protected
, weil private
es zu restriktiv und protected
zu nachsichtig war.