这是一个困扰我很久的问题。
是否可以仅使用过程和全局变量在 C 等非 OO 语言中实现多态性和继承等 OOP 原则?为此,我们是否需要从较低级别的抽象中进行特殊处理?
这个问题有任何意义吗?!
这是一个困扰我很久的问题。
是否可以仅使用过程和全局变量在 C 等非 OO 语言中实现多态性和继承等 OOP 原则?为此,我们是否需要从较低级别的抽象中进行特殊处理?
这个问题有任何意义吗?!
当然,也可以以 OO 的方式使用像 C 这样的语言。多态性可以用指向函数的指针来模拟(但不要期望通过这种方式获得易于管理的代码)。也许这个讨论
http://ootips.org/oop-in-c.html
将帮助您获得更多见解。
是否可以在像 C 这样的非 OO 语言中实现像多态和继承这样的 OOP 原则?
是的,但是做正确需要一些工作,并且在 C 中执行此操作的库使用起来可能非常麻烦,因为所有指针都Foo
作为参数传递给Foo
实例中的函数指针。查看 Berkeley DB 和 GTK+。(我必须承认我从未编程过 GTK+。)
更一般地说,过程语言可以做 OO;那些有闭包的使它成为特别的。容易,因为对象是穷人的闭包。
这绝对是可能的。查看 Mark Dominus 关于同一主题的这篇文章。Mark 展示了如何仅用 C 来模拟面向对象编程的基本原理。
从理论上讲,应该可以使用任何图灵完备语言来模拟 OO。这样做所需的工作量可能因语言的能力而异。考虑到我们仍在宇宙飞船和其他几个关键系统中使用 C,模拟 OO 似乎是一个相当微不足道的问题。