关于oop:访问控制修饰符的历史,例如public / private / protected

History of access control modifiers such as public/private/protected

这些关键词和概念是如何产生的?使他们出现的力量和问题是什么?第一种语言是什么?

实际上,这不仅仅是关于public/private/protected,而是执行某些规则的整个关键字范围(abstractfinalinternal)。

但是,请不要想当然。如果你至少知道答案的一部分,那就回答;如果你经历过那些时刻,那就回答。非常感谢参考文献。


Simula(1967)被认为是第一种OO语言,它有被称为保护和隐藏的修饰符。我想公众是默认的,我不记得了。它还使用虚拟。

而且,由于pavel的帮助,Simula引入了类中最重要的关键字(和概念),这个、新的、向下转换和引用类型。

smalltalk(1980),一种后来更基本的OO语言,为我们提供了响应消息的方法。这基本上是与虚拟函数相同的功能。消息和类随后在C(非OO)中被模仿,以提供WindowsAPI多态行为。但是仍然需要丑陋的switch语句和函数指针来替换继承。

据我所知,第一次使用属性是在delphi中(object pascal,<1994)。


公共、私有和受保护的访问修饰符来自C++。在"C类"中,"公有"和"私有"似乎已经存在,C++的短命先驱。这可能在C++的设计和进化中有详细说明。

我认为抽象和最终来自Java,内部来自C语言。


对于C++,私有和公共保护的起源来自于Stroustrup对C类的实验,但是从一个更旧的系统——剑桥CAP计算机开始。这在《C++设计与演化》第2.10节中有所描述。

至于受保护的人,他们的过去比较模糊,我没有很好的参考资料。


这类事情始于多个语言设计师问"这个概念的简单逻辑名称是什么?"然后,随着时间的推移,某些名字变得流行起来(有时因为它们是好名字,有时仅仅因为)。再加上20年,大多数人最终会根据他们所看到的情况选择相同的名字。

一个类似的问题,也许是问如何在英语中添加新词。