![]() |
1
1
这确实是面向对象语言背后的两种主要方法,我不知道另一个完全不同的基本原则。 但是有一个 很多变体 两种方法,以及许多 其他编程语言构造 这解决了基于类或基于原型的语言中的重用/可扩展性问题。例如:traits,mixin,extension methods,partial class,generics,first-class slots,split objects等。许多这样的结构是在研究论文(ecoop,oopsla,popl会议)中首次提出的,其中一些已经成为流行语言的主流。但我认为他们 变化 而不是作为开创性的新的基本原则。 尽管如此,还是要注意 模拟面向对象编程 在非面向对象的语言中 本身 . 例如,使用clojure multi-method . 例如在scala中,面向对象编程和函数编程也在缓慢地融合。 编辑 写一份经典/开创性的论文清单其实很难,而且我也没有假装有足够的知识去做。如果某处有一个,我会很感兴趣地去看:)不过,这里有几个可能会让你感兴趣的。 继承、委托、子类型:
模块,组合,改编 |
![]() |
2
2
mixin允许您使用在其他地方(如模块中)定义的代码扩展类。 见 Ruby Mixin Tutorial 作为介绍。 |
![]() |
3
1
go有一个类似于类的概念,但是没有继承,接口非常灵活。你可以在 Effective Go . |
![]() |
4
0
你可能想看看维基百科关于编程范例的文章。我所使用的是面向方面的编程,这就是mixin的来源。 |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 3 年前 |