language-agnostic - 是什么让语言面向对象?

标签 language-agnostic oop programming-languages glossary

由于没有有意义的条款的辩论是meaningless ,我想我会指着房间里的大象问:究竟是什么让语言“面向对象”?我在这里寻找的不是教科书答案,而是基于您使用在您的领域中运行良好的 OO 语言的经验,无论它可能是什么。

一个可能有助于首先回答的相关问题是:面向对象语言的原型(prototype)是什么,为什么?

最佳答案

面向对象的并不是真正的语言,而是代码。

可以编写面向对象的 C 代码(如果您愿意,可以使用结构甚至函数指针成员),我已经看到了一些非常好的例子。 (想到 Quake 2/3 SDK。)当然也可以用 C++ 编写过程(即非 OO)代码。

鉴于此,我会说这是该语言对编写良好的 OO 代码的支持,使其成为“面向对象的语言”。我永远不会为在 C 中的结构中使用函数指针成员而烦恼,例如,对于普通的成员函数;因此我会说 C 不是面向对象的语言。

(对此进行扩展,可以说 Python 也不是面向对象的,在每一步都有强制性的“自我”引用,并且构造函数称为 init ,诸如此类;但这是一个宗教讨论。)

关于language-agnostic - 是什么让语言面向对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29099/

相关文章:

compiler-construction - 对编程语言进行逆向工程或 'Unsupervised Learning of Languages'

algorithm - 检查一个单词是否由一个或多个串联的字典单词组成

javascript - 基于原型(prototype)的面向对象。黄金三镖客?

实时模拟二维容器中某些液体的算法

c++ - 在 C++ OOP 中,谁负责删除传递给构造函数的对象

Java:重写具有不同返回类型的派生类中的方法?

programming-languages - 语言能否拥有 Lisp 强大的宏而不带括号?

algorithm - 最小化函数

PHP - 多个不同的数据库依赖注入(inject)类

java - 如何创建子类,使其属性值不会被父类覆盖?