这些是面向对象的概念:
- 遗产
- 多态性
- 抽象
- 封装
现在,您能说每种 OO 编程语言都实现了所有这些技术吗?或者,否则,所有 OO 语言中的共同点是什么?例如,比较 Java 和 javascript。这不是一个愚蠢的问题。例如,某些语言(例如 Java)在 Scala 允许时不允许多重继承。所以,Java 就像不完整的 OO 语言。我只是想知道是否说每种 OO 语言例如是多态的是否完全正确。干杯
简单的回答:不。
这是一篇很好的文章,它指出了..如何定义“真正的”OO语言..无法完成。
面向对象和计算机语言之间存在着不同的关系:OO 的支持、OO 的普遍使用和 OO 的实施。再次,我建议您做一些明确的努力:例如“Java 支持 OO,但不是到处使用它”、“SmallTalk 到处都使用 OO,即使是整数”、“Java 通过让你将所有代码放入方法来强制执行 OO”等 来源
其中一些 OOP 概念是在大多数语言之后创建的,并且在那里有更高版本.. 对它们有不同级别的支持。
这实际上取决于语言的主要原则,应该支持或要求女巫概念。
具有面向对象特性的语言(超过 50 种)
首先,我绝对不同意
...例如 Java,当 Scala 允许时不允许多重继承。所以,Java 就像不完整的 OO 语言。
如果您要根据另一种语言的功能来判断 OO 是一种语言,那么我想您会发现没有“完整的” OO 语言。我认为您应该做的是跟踪 OO 根源并检查给定语言在多大程度上遵循该范式。一个非常好的读物是 Alan Kay 的Smalltalk 的早期历史,他解释了范式的基础知识。基于此,您以后可以划分纯 OO 语言,其中一切都被建模为对象(例如 Smalltalk 或 Self)和混合语言,虽然支持 OO 概念,但不完全遵守范式(例如 PHP)。此外,有纯 OO 语言,既有基于类的也有基于原型的,因此,例如是否具有多重继承并不能定义语言是否是 OO。
高温高压