Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 科特林是什么类型的语言?纯面向对象&x27;功能性_Kotlin - Fatal编程技术网

Kotlin 科特林是什么类型的语言?纯面向对象&x27;功能性

Kotlin 科特林是什么类型的语言?纯面向对象&x27;功能性,kotlin,Kotlin,我正在学习Kotlin。有Java背景的我知道,Java是纯面向对象的语言。所有内容都必须在类内,即使是主函数 这就是为什么我想知道Kotlin是一种真正的面向对象语言吗? 因为可以用Kotlin编写functionl程序 package functions fun sayHello(name: String): String { val personName = name return "hello $personName" } fun main(args: Array<

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

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

package functions

fun sayHello(name: String): String {
    val personName = name
    return "hello $personName"
}
fun main(args: Array<String>) {
    println(sayHello("Netra"))
}
包函数
fun sayHello(名称:String):String{
val personName=name
返回“hello$personName”
}
趣味主线(args:Array){
println(sayHello(“Netra”))
}

实际上,大多数语言分析师根本不认为Java是一种纯粹的面向对象语言。所有需要放在类中的代码都不是一个好的测试,更好的测试是对象语言中的所有东西。在Java中,许多语言元素,特别是方法和函数(函数很长一段时间都不存在,但最近通过lambdas添加)都不能作为对象使用

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

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

能够支持函数式编程也不会使语言成为“非oo”。考虑(或研究)Scala。< /P> 函数式编程可能和面向对象编程一样古老,甚至比面向对象编程更古老,但最近变得越来越流行,这反映在新语言中有更多的FP特性,Kotlin还提供了更多的FP支持。没有一种语言是“纯”FP,甚至“打印”语句也有副作用

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

-----添加引用 对于Java上关于OO的源代码,我建议作为权威,以及其他证书,其共同作者达到了3个版本。作为一个参考,在1:40的幻灯片上

Java是一种90年代的命令式语言,它不是真正的面向对象的


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

我想你已经回答了自己的问题:两者都不是。它不是纯粹的OO,也不是纯粹的功能性。你的“功能性”程序示例也可以用静态方法用Java编写。我认为Java也不是“纯粹的面向对象语言”。如果你能告诉我一些特定的可靠资源,这将是有帮助的。我在原始帖子中添加了一个具体可靠的来源,因为链接比评论中的链接更好。