删除访问修饰符
Java最初确实有private protected
修饰符,但它在JDK1.0.2中被删除(第一个stable版本,我们今天知道的Java1.0).一些关于JDK 1.0.2(here和here)的教程如下:
注意:Java语言的1.0版本支持五种访问级别:上面列出的四种加上private protected
.高于1.0的Java版本不支持private protected
访问级别;您不应该再在Java程序中使用它.
另有answer on SoftwareEngineering.SE个州:
Java最初有这样一个修饰符.它是private protected
年前编写的,但在Java 1.0中被删除.
现在让我们来看看这Java Version History个人:
JDK 1.0
第一个版本于2010年10月10日发布,名为Oak.The first stable version, JDK 1.0.2, is called Java 1.
由此,我们可以得出结论,关于1.0.2版的教程参考了第一个版本JDK 1.0,该语言被称为Oak,但来自软件工程.SE指的是第一个稳定的版本,JDK1.0.2,称为Java1.0,在那里它被删除了.
现在,如果您try 在Java 1.0 documentation中搜索它,您将找不到它,因为如前所述,它在JDK 1.0.2(也称为Java 1.0)中被删除了.当您查看您发布的链接的"上次修改"时间时,这一点再次得到证明.您发布的链接上次修改是在1996年2月.当private protected
被移除时,Java1.0/JDK 1.0.2发布了after February of 1996,根据规范,发布时间是1996年8月.
移走的理由
一些来源也解释了private protected
的原因,比如this一个.引用:
What was private protected?个
早期,Java语言允许某些修饰符的组合,其中一个是private protected
.private protected
的含义是将可见性严格限制为子类(并删除包访问).这后来被认为有些不一致和过于复杂,不再被支持.
[5] 在Java的Beta2版本中,protected
修饰符的含义发生了变化,同时出现了private protected
组合.他们修补了一些潜在的安全漏洞,但让许多人感到困惑.
还有软件工程.SE也支持这一点,说它不值得出现不一致和额外的复杂性,所以它很早就被删除了.
理解
我对这一切的解释是,也许在橡树时代,两者被允许共存(因此出现了组合).由于protected
的含义已更改1,可能需要同时允许private
和protected
.介绍变得太复杂了,不值得这样做,最终被放弃了.到Java 1.0/JDK 1.0.2发布时,它已经被删除,因此在文档中找不到它.
1在Oak Language Specification的第4.10、Access to Variables and Methods节中,需要注意的是默认修饰符是protected
:
默认情况下,类中的所有变量和方法都是protected.
这与我们今天使用的默认包访问方式大不相同.这可能为private protected
人的需求铺平了道路,因为private
人太过严格,protected
人太过宽松.