アクセス修飾子の削除
Javaには元々private protected
修飾子がありましたが、JDK 1.0.2(最初の安定バージョン、今日私たちが知っているJava 1.0)で削除されました。JDK 1.0.2に関するいくつかのチュートリアル(こことここ)は次のように述べています。
注:Java言語の1.0リリースは、5つのアクセスレベルをサポートしていますprivate protected
。private protected
アクセスレベルは、1.0よりも高いのJavaのバージョンでサポートされていません。Javaプログラムで使用することはできません。
SoftwareEngineering.SEに関する別の回答には、
Javaには元々そのような修飾子がありました。書かれましたprivate protected
が、Java 1.0で削除されました。
次に、Javaのバージョン履歴を確認します。
JDK 1.0
最初のバージョンは1996年1月23日にリリースされ、 Oakと呼ばれていました。最初の安定したバージョン、JDK 1.0.2はJava 1と呼ばれます。
これから、バージョン1.0.2に関するチュートリアルは、言語がOakと呼ばれた最初のバージョンであるJDK 1.0を参照していることを結論付けることができますが、SoftwareEngineering.SEからのものは、Javaと呼ばれる最初の安定したバージョン、JDK 1.0.2を参照します。 1.0、それが削除されたところ。
これをJava 1.0のドキュメントで検索しようとしても見つかりません。前述したように、JDK 1.0.2で削除されたため、Java 1.0とも呼ばれていました。これは、投稿したリンクの「最終更新」時間を見ると再び証明されます。あなたが投稿したリンクは、1996年2月に最後に変更されました。Java1.0 / JDK 1.0.2は、private protected
削除されたときに、1996年2月以降にリリースされ、仕様に従って、1996年8月にリリースされました。
削除の理由
いくつかのソースはまた、理由を説明するprivate protected
など、この 1。引用するには:
私的保護は何でしたか?
初期のJava言語では、修飾子の特定の組み合わせが可能でしたが、そのうちの1つはでしたprivate protected
。の意味は、private protected
可視性をサブクラスに厳密に制限する(そしてパッケージアクセスを削除する)ことでした。これは後でやや一貫性がなく、過度に複雑であると見なされ、サポートされなくなりました。[5]
[5] protected
JavaのBeta2リリースで修飾子の意味が変更され、private protected
組み合わせが同時に登場しました。彼らはいくつかの潜在的なセキュリティホールにパッチを当てましたが、多くの人々を混乱させました。
また、SoftwareEngineering.SEもこれをサポートします。これは、不整合や余分な複雑さの価値はないため、早期に削除されました。
解釈
これらすべてについての私の解釈は、おそらくオーク時代に、両方が共存することを許されていたということです(したがって、組み合わせ)。以来protected
の意味が変わっていた1を、可能にするための必要性があったかもしれないprivate
とprotected
同時に。紹介は複雑になりすぎて価値がなかったため、結局削除されました。Java 1.0 / JDK 1.0.2が登場する頃には、Java 1.0 / JDK 1.0.2は削除されていたため、ドキュメントに記載されていません。
1ではオーク言語仕様、セクション4.10、変数やメソッドへのアクセスは、デフォルトの修飾子はしたことが注目されますprotected
。
デフォルトでは、クラス内のすべての変数とメソッドは保護されています。
これは、現在のデフォルトのパッケージアクセスとはかなり異なります。これはprivate protected
、private
制限が厳しく、protected
寛大すぎるため、の必要性に道を開いた可能性があります。