Kotlin 在类内部和外部声明变量之间有什么区别?
以下是一个例子: 在类内声明Kotlin 在类内部和外部声明变量之间有什么区别?,kotlin,Kotlin,以下是一个例子: 在类内声明 class User { private val greeting = "Hello, World!" } private val greeting = "Hello, World!" 在课堂外宣布 class User { private val greeting = "Hello, World!" } private val greeting = "Hello, Worl
class User {
private val greeting = "Hello, World!"
}
private val greeting = "Hello, World!"
在课堂外宣布
class User {
private val greeting = "Hello, World!"
}
private val greeting = "Hello, World!"
这归结为这样一个事实:Kotlin允许您创建不包含类的文件,而只包含“顶级”声明。看看他们的 或者,换句话说: 顶级声明是在任何类、对象、接口或其他结构外部定义的函数或属性 (来自)
因此:有一个根本的区别。第一个示例是仅存在于该类范围内的字段。另一个是一个良好的、模块范围的私有变量。在
类中声明的属性是该类的一部分。 这意味着,类的每个实例都有自己的属性版本,与其他实例不同。 (相反,如果从未创建该类的任何实例,则该属性在任何地方都没有版本。)
因为它是私有的
,您只能通过类访问它;它对任何其他代码都不可见
在这种情况下,因为它是一个带有常量初始化器的val
,所以每个实例都会得到一个对同一字符串的引用,所以您可能认为它有点毫无意义。 但是,它仍然是限制对属性的访问的一个好方法,并使它与类的连接对任何阅读它的人来说都是显而易见的
在类外部声明的属性是顶级属性。 这属于包,是Kotlin最接近全局的东西。 其中只有一个。 (因此,User
的每个实例都会引用相同的问候语
——尽管如此,因为它是一个带有常量初始化器的val
,在这种情况下没有任何实际区别。)
您可以从该文件中的任何位置访问它,但因为它是私有的
,所以它对任何其他文件中的代码都不可见