我知道基于类和基于原型的面向对象编程语言,还有其他选择吗?它们是什么?
答案 0 :(得分:2)
mixins允许您使用在其他地方定义的代码扩展类,例如在模块中。
请参阅Ruby Mixin Tutorial了解相关信息。
答案 1 :(得分:1)
Go有一个类似于类的概念,但没有继承和非常灵活的接口。您可以在Effective Go中了解有关它的更多信息。
答案 2 :(得分:1)
这些确实是面向对象语言背后的两种主要方法,我不知道另一种完全不同的基本原则。
但是这两种方法都存在很多变种,以及许多其他编程语言结构,可以解决基于类或原型的重用/可扩展性问题基于语言。示例:traits,mixin,扩展方法,partial类,泛型,一流插槽,拆分对象等。许多此类结构首先在研究论文(ECOOP,OOPSLA,POPL会议)中提出,其中一些已成为流行语言的主流。但我认为它们是变种,而不是开创性的新基本原则。
请注意,您可以模仿面向对象编程,而不是面向对象的语言本身。例如,使用Clojure multi-method。面向对象和函数式编程也在慢慢融合,例如在Scala中。
修改强>
实际上很难列出经典/开创性的论文,我并没有假装有足够的知识这样做。如果某个地方有一个,我会非常有兴趣看到它:)但是,这里有一些你可能会感兴趣的。
继承,委派,子类型化:
模块,构图,改编
答案 3 :(得分:0)
您可能需要查看Wikipedia关于编程范例的文章。我曾经使用过的是面向方面的编程,这是mixins的用武之地。