kotlin 如何正确访问其他类中的属性

h6my8fg2  于 2023-06-06  发布在  Kotlin
关注(0)|答案(1)|浏览(232)

改变一个var可能会导致类/程序内部的问题。
我问我,如何在类中正确存储变量,以防止外部或其他类未经授权的访问。
它还应防止封装。

  • 使用getter,外部的东西知道类内部的属性。
  • 有了backingField,它就更加隐藏在类内部。

正确的方法是什么?

class sleepingRoom {
 var beds = 2
     get() = field
     set(value) {
         // do something
     }

 private var _beds2 = 2
 val beds2: Int
     get() = _beds2
}
wgx48brx

wgx48brx1#

多亏了Kotlin中的属性概念,我们不需要担心这个问题。以卧室中的床数为例,如果没有任何进一步的约束,则可以简单地定义一个属性:

class SleepingRoom {
  var beds = 2
}

这相当于Java代码,其中有一个私有字段以及一个getter和一个setter,但样板代码要少得多。如果你不想有一个setter,那么只需将var更改为val
如果稍后您决定要更改属性beds的内部语义,那么没有什么可以阻止您这样做。你可以定义一个显式的getter或setter、另一个支持属性、属性委托者。这可能会极大地改变您的属性的行为,但对于属性的用法,这些都是不可见的。它仍然只是一个属性beds

相关问题