所以...我一直在做一些研究。接下来是一些有兴趣的人的历史课程。:)如果您仅对答案感兴趣,请跳至底部的结论。
1967年:
SIMULA 67,第一面向对象的程序设计语言定义的关键词作为类,对象,通过引用呼叫,由值呼叫和虚拟。
SIMULA的继承系统最初以不同的名称称为串联(后来称为prefix),指的是复制超级类型的代码并将其与子类型的代码“串联”的事实。后来出现了另一种形式的继承系统,委托,其中通过引用正确的类型来委托调用。
虚拟最有可能是指使用虚拟方法表将调用调度到正确的实现所需要执行的过程。与固定/具体实施相比,它是虚拟的。
1971年:
尼克劳斯·沃思(Niklaus Wirth)撰写了一个定义为“ 逐步完善”的概念。它从根本上解释了如何将程序划分为可以扩展的部分解决方案。
1974年:
这是我发现的最早由Barbara Liskov提出的抽象数据类型一词的论文。
抽象数据类型定义一类抽象对象,该类对象完全由这些对象上可用的操作来表征。这意味着可以通过定义抽象类型的特征操作来定义该抽象类型。当程序员使用抽象数据对象时,他只关心该对象表现出的行为,而与实现如何实现该行为无关。
本文还定义了一个操作集群,该集群似乎指定了我们现在所知道的接口。
有趣的科学术语(1996年发表的论文):
继承:对象或类可以共享行为或数据的一种更底层的机制。
子类型化:表示概念上的专业化。一种特定形式的继承,也称为接口继承。
抽象原理:将我们对应用程序领域的知识组织到抽象顺序的层次排列中的过程,以便更好地了解所关注的现象。
部分实现的抽象:故意使定义不完整的抽象。
抽象类:面向对象系统中部分实现的类的特定术语。
非严格继承:允许在子类中重新定义(甚至删除)操作。
严格继承:行为兼容的继承。
结论:
抽象类是在面向对象系统中使用的最通用的术语。似乎纯净的和非纯净的虚函数仅源自C ++。例如,对Stroustrup的这次采访使他似乎发明了这些术语。科学论文使用更通用的术语。
虚拟起源于SIMULA,这导致它的使用得到了广泛的应用,但这并不是一个通用术语。它已经定义了实现细节。说到继承的类型更合适。默认情况下,非虚拟对应于默认情况下的严格继承,而默认情况下,虚拟对应于非严格继承。
是否有兴趣调整Wikipedia条目?:)