Kotlin 是什么类型的语言?纯 OOP 或函数式

imG*_*mGs 0 kotlin

我在学习Kotlin。我知道有 Java 背景,Java 是纯面向对象的语言。一切都必须在类内,即使是主函数。

这就是为什么我想知道是Kotlin一种真正的面向对象语言吗?因为可以用 Kotlin 编写函数式程序。

package functions

fun sayHello(name: String): String {
    val personName = name
    return "hello $personName"
}
fun main(args: Array<String>) {
    println(sayHello("Netra"))
}
Run Code Online (Sandbox Code Playgroud)

inn*_*ov8 8

实际上,大多数语言分析师根本不认为 Java 是一种纯粹的面向对象语言。需要在一个类中的所有代码都不是一个好的测试,一个更好的测试是语言中的一切都是一个对象。在 Java 中,许多语言元素,尤其是方法和函数(函数长期以来一直缺失,但最近通过 lambdas 添加)不能作为对象使用。

Kotlin 确实纠正了 Java 在面向对象方面的许多缺陷,尽管 Java 本身也在慢慢纠正这些缺陷。但总的来说,可以说 Kotlin 可以被认为比 Java 更“OO”,这主要是因为它是一种能够纠正过去错误的较新设计的好处。

能够像现在在 Java 中使用 Lambdas 那样编写函数并不是“反面向对象”,真正的考验是函数本身是否可以是一流的对象。通过添加函数,Java 并没有变得不那么面向对象,事实上,随着时间的推移,Java 正在逐渐变得更加面向对象。研究“Java OO 吗?”

能够支持函数式编程也不会使语言变得“非 oo”。考虑(或研究)scala。

函数式编程可能与 OO 一样古老甚至更古老,但最近变得越来越流行,这反映在新语言中更多的 FP 特性,而 Kotlin 也提供了更多的 FP 支持。没有语言是“纯”FP,甚至“打印”语句也有副作用。

Kotlin 提供对这两种习语的支持,并且可能比 Java 更面向对象,但被认为比更专用的 FP 语言更少 FP。随着时间的推移,可能会添加更多 FP 功能。

----- 增加参考 对于 Java 的 OO 源代码,我建议Russel Winder 博士作为权威,其中包括《Developing Java Software》的合著者,已出版3 个版本。对于一个参考,请参阅此视频,其中包含 1:40 的幻灯片以及声明

Java 是 1990 年代的命令式语言,并不是真正的面向对象。

作为公认的 Java 专家,在该视频和 Russel 的其他演示文稿中进一步解释了这一观点。许多其他 Java 专家也表达了这种观点,我可能会添加参考文献,但是如果为每个示例添加尽可能多的细节,这篇文章会显得太长。

  • 我在原始帖子中添加了一个特定的可靠来源作为链接,比评论中的要好。 (2认同)