gpt4 book ai didi

java - 为什么可以在 Kotlin 的类之外编写函数?

转载 作者:IT老高 更新时间:2023-10-28 13:28:43 26 4
gpt4 key购买 nike

我不明白为什么可以在 Kotlin 的类之外编写函数?这是一个好习惯吗?

例如,在 Kotlin 中可以在我的 MainActivity 类之外编写一个函数:

fun hello(){}

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

hello()
}
}

在 Java 中,这是不可能的!这不是面向对象语言的正常工作方式,对吧?

在文档中,他们谈到了经典函数的 Local Functions 和定义在类或对象中的函数的 Member Functions,但他们没有解释什么时候是最好使用其中一个。

最佳答案

In Java, this is impossible! That's not how an object-oriented language works normally, right?

稍等片刻,重新考虑一下 java 静态方法的本质。一个类应该是对象的蓝图,描述它们的行为和状态。但是你可以调用静态方法而不创建任何实例。

这如何适应面向对象的图景?静态方法如何“属于”它声明的类?

实际上,静态方法在 Java 中是一种 hack,它们污染和滥用类的 OOP 概念。但是这些年你已经习惯了,所以你不再有这种感觉了。

从概念上讲,静态方法是顶级函数,Java 使用其声明类的名称作为其命名空间。与此相反,Kotlin 允许您声明顶级函数,而不会滥用类进行命名空间。

关于java - 为什么可以在 Kotlin 的类之外编写函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com