我正在学习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"))
}
答案 0 :(得分:3)
实际上,大多数语言分析师根本不认为Java是纯粹的面向对象语言。所有需要在类中的代码都不是一个好的测试,更好的测试是语言中的所有内容都是一个对象。在Java中,许多语言元素,特别是方法和函数(函数很长一段时间都缺失但最近通过lambdas添加)不能用作对象。
尽管Java本身也在慢慢纠正这些缺陷,但Kotlin确实纠正了Java的许多缺陷。但通常可以说Kotlin可以被认为比Java更“OO”,主要是因为它是一种能够纠正过去错误的新设计。能够编写函数,就像现在使用Lambdas的Java一样,不是“反面向对象”,真正的测试是函数本身是否可以是一等对象。通过添加函数,Java并没有变得更少OO,事实上Java随着时间的推移逐渐变得更加OO。研究'是Java OO吗?'
能够支持函数式编程并不能使语言成为“非oo”。考虑(或研究)scala。
功能编程可能与OO一样旧或甚至更旧,但最近变得越来越流行,这反映了更多FP功能在新语言中,而Kotlin也提供了更多支持FP。没有语言是“纯粹的”FP,甚至“打印”语句都有副作用。
Kotlin为这两个习语提供支持,可能比Java更多OO但被认为比更专用的FP语言更少的FP。随着时间的推移可能会添加更多FP功能。
-----添加参考 对于关于OO的Java上的来源,我建议Dr Russel Winder作为权威,以及其他凭据,Developing Java Software的共同作者,达到3个版本。对于一个参考,see this video带有幻灯片1:40,带有声明
Java是一种20世纪90年代的命令式语言,并非真正面向对象。
作为一位公认的Java专家,该视频和Russel的其他演示文稿都进一步解释了这一观点。许多其他Java专家也表达了这种观点,我可能会添加引用,但是这篇文章的篇幅太长,无法为每个示例添加更多细节。