【发布时间】:2020-03-11 22:08:28
【问题描述】:
它是否支持声明和实现分离(Java 中的接口和类)之类的概念?
如何限制访问(如 Java 中的访问修饰符)?
【问题讨论】:
-
请注意,如果您在 Haskell 中工作,则不应尝试编写 Java 程序,反之亦然。 与语言一起工作,而不是逆向工作,通常会产生更清晰的代码。
-
这是我做的一个小练习,试图模仿一些面向对象的特性。 gist.github.com/877617 但是,这不过是一个练习。我不会以 Java 风格编写 Haskell。
-
下面有一些很棒的答案,但我建议您不要将此类事情视为“OO”功能。例如,在 Haskell 中,封装和隐藏实现的主要单元是模块,并且不依赖于任何特定的数据结构。模块化设计在用于面向对象编程之前是一件好事!同样,Haskell 中的类型类明确拒绝将数据结构及其行为写在一个地方的 OO 思想,但仍然有效地将接口和实现分开。
-
AFAIK 即使在 C 中,您也可以划分声明和实现。访问限制也不是真正的 OOP 概念。数据隐藏可能是,但这更多的是关于如何使用事物,而不是语言施加的限制。
标签: haskell