18

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

实际上,这不仅仅是关于public// privateprotected而是强制执行某些规则的整个关键字范围(abstract, final, internal)。

但是,请不要假设事情。如果您至少知道部分答案,请回答,或者如果您经历过那些时刻,请回答。参考非常感谢。

4

4 回答 4

8

Simula (1967)被认为是第一个 OO 语言,具有称为 protectedhidden的修饰符。我假设 public 是默认值,我不记得了。它还使用虚拟.

并且,感谢 Pavel,Simula 引入了classthisnew、向下转换和引用类型的最重要的关键字(和概念)。

Smalltalk (1980)是一种较晚但更基础的面向对象语言,它为我们提供了响应消息的方法。这基本上与虚拟功能具有相同的功能。消息和类后来在 C(非 OO)中被模仿,以赋予 Windows API 多态行为。但是仍然需要丑陋的 switch 语句和函数指针来替换继承。

据我所知,Properties的第一次使用是在 Delphi 中(Object Pascal,< 1994)。

于 2009-08-26T16:28:41.950 回答
2

public、private 和 protected访问修饰符来自 C++。似乎公共和私有已经存在于“C with classes”中,这是 C++ 的短暂前身。这可能在The design and Evolution of C++中有详细说明。

认为abstract 和 final 来自 Java, internal 来自 C#。

于 2009-08-26T13:05:14.850 回答
0

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

一个类似的问题,也许是询问如何将新词添加到(比如说)英语中。

于 2009-08-26T13:03:36.490 回答
0

对于 C++,私有和公共保护的起源来自 Stroustrup 对 C With Classes 的实验之前,但来自一个更老的系统 - Cambridge CAP 计算机。这在“C++ 的设计与演变”的第 2.10 节中有描述。

至于受保护的,它的过去比较模糊,我没有很好的参考。

于 2009-08-26T13:40:54.347 回答