1

这是一个困扰我很久的问题。

是否可以仅使用过程和全局变量在 C 等非 OO 语言中实现多态性和继承等 OOP 原则?为此,我们是否需要从较低级别的抽象中进行特殊处理?

这个问题有任何意义吗?!

4

3 回答 3

1

当然,也可以以 OO 的方式使用像 C 这样的语言。多态性可以用指向函数的指针来模拟(但不要期望通过这种方式获得易于管理的代码)。也许这个讨论

http://ootips.org/oop-in-c.html

将帮助您获得更多见解。

于 2011-05-28T21:58:36.617 回答
1

是否可以在像 C 这样的非 OO 语言中实现像多态和继承这样的 OOP 原则?

是的,但是做正确需要一些工作,并且在 C 中执行此操作的库使用起来可能非常麻烦,因为所有指针都Foo作为参数传递给Foo实例中的函数指针。查看 Berkeley DB 和 GTK+。(我必须承认我从未编程过 GTK+。)

更一般地说,过程语言可以做 OO;那些有闭包的使它成为特别的。容易,因为对象是穷人的闭包

于 2011-05-28T21:59:58.260 回答
0

这绝对是可能的。查看 Mark Dominus 关于同一主题的这篇文章。Mark 展示了如何仅用 C 来模拟面向对象编程的基本原理。

从理论上讲,应该可以使用任何图灵完备语言来模拟 OO。这样做所需的工作量可能因语言的能力而异。考虑到我们仍在宇宙飞船和其他几个关键系统中使用 C,模拟 OO 似乎是一个相当微不足道的问题。

于 2011-05-28T22:10:13.313 回答